Phoenix クライアント - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Phoenix クライアント

完全な依存関係で構築されたJDBCクライアントを使用するか、Phoenix クエリサーバーを使用する「シンクライアント」を使用して Phoenix に接続し、クラスターのマスターノードでのみ実行できます (SQLクライアント、ステップ、コマンドライン、SSHポート転送などを使用)。「太いJDBC」クライアントを使用する場合、 HBaseサービスに直接接続するため、クラスターのすべてのノードにアクセスできる必要があります。「シン」Phoenix クライアントでは、Phoenix クエリサーバーにデフォルトポート 8765 でアクセスできる必要のみがあります。Phoenix には、これらのクライアントを使用するスクリプトがいくつかあります。

Amazon EMR ステップを使用して Phoenix を使用してクエリを実行する

次の手順では、 からスナップショットを復元HBaseし、そのデータを使用して Phoenix クエリを実行します。必要に応じてこの例を拡張するか、Phoenix クライアントを利用する新しいスクリプトを作成できます。

  1. 次のコマンドを使用して、Phoenix がインストールされた状態でクラスターを作成します。

    aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://myBucket/myLogFolder --release-label emr-7.2.0 \ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles
  2. 次のファイルを作成して、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.sql

    phoenixQuery.sql

    注記

    Amazon EMRバージョン 5.26.0 以降を使用する場合にのみ、次の例COLUMN_ENCODED_BYTES=0に を含める必要があります。

    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";

    を使用して AWS CLI S3 バケットにファイルを送信します。

    aws s3 cp copySnapshot.sh s3://myBucket/ aws s3 cp runQuery.sh s3://myBucket/ aws s3 cp phoenixQuery.sql s3://myBucket/
  3. ステップ 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
  4. script-runner.jar を使用して、先に S3 バケットにアップロードした copySnapshot.sh スクリプトを実行します。

    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"]

    これにより、 MapReduce ジョブが実行され、スナップショットデータがクラスター にコピーされますHDFS。

  5. 次のステップを使用して、クラスターにコピーしたスナップショットを復元します。

    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
  6. script-runner.jar を使用して、先に S3 バケットにアップロードした runQuery.sh スクリプトを実行します。

    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"]

    クエリが実行され、ステップの stdout に結果が返ります。このステップが完了するには数分間かかる場合があります。

  7. ステップ 1 でクラスターを作成したときに使用したログstdoutでURI、ステップ の結果を検査します。結果は次のようになります。

    +------------------------------------------+-----------------------------------+ | 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 | +------------------------------------------+-----------------------------------+