Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Clientes de Phoenix
Puede conectarse a Phoenix utilizando un cliente JDBC creado con dependencias completas o utilizando el "cliente ligero" que utiliza el Phoenix Query Server y que solo se puede ejecutar en un nodo principal de un clúster (por ejemplo, mediante la utilización de un cliente SQL, un paso, línea de comando, enrutamiento de puertos SSH, etc.). Si se utiliza el cliente JDBC «robusto», este aún necesita tener acceso a todos los nodos del clúster, ya que se conecta directamente a HBase los servicios. El cliente de Phoenix "ligero" solo necesita acceso a Phoenix Query Server en un puerto predeterminado 8765. Existen varios scripts
Utilizar un paso de Amazon EMR para consultar con Phoenix
El siguiente procedimiento restaura una instantánea de los datos HBase y los utiliza para ejecutar una consulta de Phoenix. Puede ampliar este ejemplo o crear un nuevo script que aproveche los clientes de Phoenix para adaptarse a sus necesidades.
-
Cree un clúster con Phoenix instalado, utilizando el comando siguiente:
aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://
amzn-s3-demo-bucket
/myLogFolder --release-labelemr-7.9.0
\ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles -
Cree y, a continuación, cargue los siguientes archivos en 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
Solo debe incluir
COLUMN_ENCODED_BYTES=0
en el siguiente ejemplo si utiliza las versiones 5.26.0 y superiores de 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";
Utilice AWS CLI para enviar archivos al bucket de 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
/ -
Cree una tabla con el siguiente paso enviado al clúster que creó en el paso 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 -
Utilice
script-runner.jar
para ejecutar el scriptcopySnapshot.sh
que cargó anteriormente en su bucket de 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"]Esto ejecuta un MapReduce trabajo para copiar los datos de la instantánea al HDFS del clúster.
-
Restaure la instantánea que ha copiado en el clúster utilizando el paso siguiente:
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 -
Utilice
script-runner.jar
para ejecutar el scriptrunQuery.sh
que cargó anteriormente en su bucket de 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 consulta se ejecuta y devuelve los resultados al
stdout
del paso. Es posible que este paso tarde unos minutos en completarse. -
Revise los resultados del
stdout
del paso en el URI de registro que utilizó al crear el clúster en el paso 1. El resultado debe ser similar a lo siguiente:+------------------------------------------+-----------------------------------+ | 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 | +------------------------------------------+-----------------------------------+