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
Ti connetti a Phoenix utilizzando un JDBC client creato con dipendenze complete o utilizzando il «thin client» che utilizza il Phoenix Query Server e può essere eseguito solo su un nodo master di un cluster (ad esempio utilizzando un SQL client, un passaggio, una riga di comando, un SSH port forwarding, ecc.). Quando si utilizza il JDBC client «fat», deve comunque avere accesso a tutti i nodi del cluster perché si connette direttamente ai HBase servizi. Il client Phoenix "thin" deve solo accedere al server query Phoenix a una porta predefinita 8765. Vi sono diversi script
Usa un EMR passaggio di Amazon 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://
myBucket
/myLogFolder --release-labelemr-7.2.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://
myBucket
/phoenixQuery.sql /home/hadoop/ /usr/lib/phoenix/bin/sqlline-thin.py http://localhost:8765 /home/hadoop/phoenixQuery.sqlphoenixQuery.sql
Nota
È necessario includere
COLUMN_ENCODED_BYTES=0
nel seguente esempio solo quando si utilizzano le EMR versioni di Amazon 5.26.0 e successive.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";
Usa il AWS CLI per inviare i file al bucket S3:
aws s3 cp copySnapshot.sh s3://
myBucket
/ aws s3 cp runQuery.sh s3://myBucket
/ aws s3 cp phoenixQuery.sql s3://myBucket
/ -
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://myBucket
/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://myBucket
/runQuery.sh"]La query viene eseguita e restituisce i risultati al
stdout
della fase. Il completamento della fase può richiedere alcuni minuti. -
Controlla i risultati dei passaggi nel registro URI utilizzato
stdout
durante la creazione del 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 | +------------------------------------------+-----------------------------------+