As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Clientes do Phoenix
Você se conecta ao Phoenix usando um cliente do JDBC criado com dependências totais ou usando o "thin client", que usa o Phoenix Query Server e só pode ser executado em um nó principal do cluster (por exemplo, usando um cliente do SQL, uma etapa, uma linha de comando, um encaminhamento de porta de SSH, etc.). Ao usar o cliente JDBC “gordo”, ele ainda precisa ter acesso a todos os nós do cluster porque se conecta diretamente aos HBase serviços. O cliente "magro" do Phoenix precisa apenas do acesso ao Phoenix Query Server em uma porta padrão 8765. Há vários scripts
Use uma etapa do Amazon EMR para fazer consultas usando o Phoenix
O procedimento a seguir restaura um instantâneo HBase e usa esses dados para executar uma consulta Phoenix. Você pode estender este exemplo ou criar um novo script que utiliza os clientes do Phoenix para atender às suas necessidades.
-
Crie um cluster com o Phoenix instalado usando o seguinte comando:
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 -
Crie e, em seguida, carregue os seguintes arquivos para o 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
Você só precisa incluir
COLUMN_ENCODED_BYTES=0
no exemplo a seguir quando usar as versões 5.26.0 e posteriores do 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";
Use o AWS CLI para enviar os arquivos para o bucket do 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
/ -
Crie uma tabela usando as seguintes etapas enviadas para o cluster que você criou na Etapa 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 -
Use o
script-runner.jar
para executar o scriptcopySnapshot.sh
que foi anteriormente carregado para o bucket do 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"]Isso executa um MapReduce trabalho para copiar seus dados de snapshot para o cluster HDFS.
-
Restaure o snapshot que você copiou para o cluster usando a seguinte etapa:
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 -
Use o
script-runner.jar
para executar o scriptrunQuery.sh
que foi anteriormente carregado para o bucket do 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"]A consulta é executada e obtém os resultados do
stdout
da etapa. Pode levar alguns minutos para a etapa ser concluída. -
Examine os resultados do
stdout
da etapa no log do URI que você usou quando criou o cluster na Etapa 1. Os resultados devem ser algo semelhante a:+------------------------------------------+-----------------------------------+ | 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 | +------------------------------------------+-----------------------------------+