Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Clients Phoenix - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Clients Phoenix

Vous vous connectez à Phoenix à l'aide d'un client JDBC construit avec des dépendances complètes ou à l'aide du « client léger » qui utilise le serveur de requêtes Phoenix et ne peut être exécutées que sur un nœud maître d'un cluster (par exemple en utilisant un réacheminement de port SSH, une ligne de commande, une étape, un client SQL, etc.). Lorsque vous utilisez le « gros » client JDBC, il doit toujours avoir accès à tous les nœuds du cluster car il se connecte directement aux HBase services. Le client Phoenix « léger » a uniquement besoin d'un accès au serveur de requête Phoenix dans un port par défaut 8765. Il existe plusieurs scripts au sein de Phoenix qui utilisent ces clients.

Utilisation d'une étape Amazon EMR pour effectuer des requêtes à l'aide de Phoenix

La procédure suivante permet de restaurer un instantané à partir de ces données HBase et de les utiliser pour exécuter une requête Phoenix. Vous pouvez étendre cet exemple ou créer un script qui s'appuie sur les clients Phoenix pour répondre à vos besoins.

  1. Créez un cluster avec Phoenix installé, à l'aide de la commande suivante :

    aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://amzn-s3-demo-bucket/myLogFolder --release-label emr-7.7.0 \ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles
  2. Créez, puis chargez les fichiers suivants sur Amazon S3 :

    copySnapshot.sh

    sudo su hbase -s /bin/sh -c 'hbase snapshot export \ -D hbase.rootdir=s3://us-east-1.elasticmapreduce.samples/hbase-demo-customer-data/snapshot/ \ -snapshot customer_snapshot1 \ -copy-to hdfs://masterDNSName:8020/user/hbase \ -mappers 2 -chuser hbase -chmod 700'

    runQuery.sh

    aws s3 cp s3://amzn-s3-demo-bucket/phoenixQuery.sql /home/hadoop/ /usr/lib/phoenix/bin/sqlline-thin.py http://localhost:8765 /home/hadoop/phoenixQuery.sql

    phoenixQuery.sql

    Note

    Vous ne devez inclure COLUMN_ENCODED_BYTES=0 dans l'exemple suivant que si vous utilisez les versions 5.26.0 et supérieures d'Amazon EMR.

    CREATE VIEW "customer" ( pk VARCHAR PRIMARY KEY, "address"."state" VARCHAR, "address"."street" VARCHAR, "address"."city" VARCHAR, "address"."zip" VARCHAR, "cc"."number" VARCHAR, "cc"."expire" VARCHAR, "cc"."type" VARCHAR, "contact"."phone" VARCHAR) COLUMN_ENCODED_BYTES=0; CREATE INDEX my_index ON "customer" ("customer"."state") INCLUDE("PK", "customer"."city", "customer"."expire", "customer"."type"); SELECT "customer"."type" AS credit_card_type, count(*) AS num_customers FROM "customer" WHERE "customer"."state" = 'CA' GROUP BY "customer"."type";

    Utilisez le AWS CLI pour envoyer les fichiers au compartiment S3 :

    aws s3 cp copySnapshot.sh s3://amzn-s3-demo-bucket/ aws s3 cp runQuery.sh s3://amzn-s3-demo-bucket/ aws s3 cp phoenixQuery.sql s3://amzn-s3-demo-bucket/
  3. Créez une table à l'aide de l'étape suivante soumise au cluster que vous avez créé à l'étape 1 :

    createTable.json

    [ { "Name": "Create HBase Table", "Args": ["bash", "-c", "echo $'create \"customer\",\"address\",\"cc\",\"contact\"' | hbase shell"], "Jar": "command-runner.jar", "ActionOnFailure": "CONTINUE", "Type": "CUSTOM_JAR" } ]
    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps file://./createTable.json
  4. Utilisez script-runner.jar pour exécuter le script copySnapshot.sh que vous avez téléchargé précédemment sur votre compartiment S3 :

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="HBase Copy Snapshot",ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/copySnapshot.sh"]

    Cela exécute une MapReduce tâche pour copier les données de vos instantanés dans le cluster HDFS.

  5. Restaurez l'instantané que vous avez copiée dans le cluster à l'aide de l'étape suivante :

    restoreSnapshot.json

    [ { "Name": "restore", "Args": ["bash", "-c", "echo $'disable \"customer\"; restore_snapshot \"customer_snapshot1\"; enable \"customer\"' | hbase shell"], "Jar": "command-runner.jar", "ActionOnFailure": "CONTINUE", "Type": "CUSTOM_JAR" } ]
    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps file://./restoreSnapshot.json
  6. Utilisez script-runner.jar pour exécuter le script runQuery.sh que vous avez téléchargé précédemment sur votre compartiment S3 :

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Phoenix Run Query",ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/runQuery.sh"]

    La requête s'exécute et renvoie les résultats au stdout de l'étape. La réalisation de cette étape peut prendre quelques minutes.

  7. Inspectez les résultats du stdout de l'étape dans l'URI du journal que vous avez utilisé lorsque vous avez créé le cluster à l'étape 1. Les résultats doivent avoir l'aspect suivant :

    +------------------------------------------+-----------------------------------+ | CREDIT_CARD_TYPE | NUM_CUSTOMERS | +------------------------------------------+-----------------------------------+ | american_express | 5728 | | dankort | 5782 | | diners_club | 5795 | | discover | 5715 | | forbrugsforeningen | 5691 | | jcb | 5762 | | laser | 5769 | | maestro | 5816 | | mastercard | 5697 | | solo | 5586 | | switch | 5781 | | visa | 5659 | +------------------------------------------+-----------------------------------+
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.