Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Client Phoenix
Ci sii connette a Phoenix utilizzando un client JDBC costruito con dipendenze complete oppure il "thin client" che utilizza Phoenix Query Server e che può essere eseguito solo su un nodo master di un cluster (ad esempio, utilizzando un client SQL, un passo, una riga di comando, l'inoltro della porta SSH, ecc. Quando si utilizza il client JDBC «fat», deve comunque avere accesso a tutti i nodi del cluster perché si connette direttamente ai servizi. HBase Il client Phoenix "thin" deve solo accedere al server query Phoenix a una porta predefinita 8765. Vi sono diversi script
Utilizzo di una fase Amazon EMR per eseguire query utilizzando Phoenix
La procedura seguente ripristina un'istantanea da HBase e utilizza tali dati per eseguire una query Phoenix. È possibile estendere questo esempio o creare un nuovo script che sfrutti i client di Phoenix per soddisfare le proprie esigenze.
-
Creare un cluster con Phoenix installato, utilizzando il seguente comando:
aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://
amzn-s3-demo-bucket
/myLogFolder --release-labelemr-7.6.0
\ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles -
Crea e in seguito carica i seguenti file in 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
Nota
Quando si utilizza Amazon EMR versione 5.26.0 e successive, è sufficiente includere
COLUMN_ENCODED_BYTES=0
nell'esempio seguente.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";
Utilizza il AWS CLI per inviare i file al bucket 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
/ -
Creazione di una tabella utilizzando i seguenti passaggi inviati al cluster creato nella Fase 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 -
Usare
script-runner.jar
per eseguire lo scriptcopySnapshot.sh
precedentemente caricato nel bucket 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"]Questo esegue un MapReduce processo per copiare i dati dell'istantanea nel cluster HDFS.
-
Ripristinare lo snapshot copiato nel cluster utilizzando i seguenti passaggi:
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 -
Usare
script-runner.jar
per eseguire lo scriptrunQuery.sh
precedentemente caricato nel bucket 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 query viene eseguita e restituisce i risultati al
stdout
della fase. Il completamento della fase può richiedere alcuni minuti. -
Ispeziona i risultati del passo
stdout
all'URI del log che hai utilizzato quando hai creato il cluster nel Passaggio 1. Il risultato sarà simile al seguente:+------------------------------------------+-----------------------------------+ | 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 | +------------------------------------------+-----------------------------------+