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
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.
-
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-labelemr-7.7.0
\ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles -
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.sqlphoenixQuery.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
/ -
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 -
Utilisez
script-runner.jar
pour exécuter le scriptcopySnapshot.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.
-
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 -
Utilisez
script-runner.jar
pour exécuter le scriptrunQuery.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. -
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 | +------------------------------------------+-----------------------------------+