Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Klien Phoenix
Anda terhubung ke Phoenix menggunakan baik klien JDBC dibangun dengan dependensi penuh atau menggunakan “thin client” yang menggunakan Phoenix Query Server dan hanya dapat dijalankan pada node master cluster (misalnya dengan menggunakan klien SQL, langkah, baris perintah, SSH port forwarding, dll). Saat menggunakan klien JDBC “gemuk”, masih perlu memiliki akses ke semua node cluster karena terhubung ke HBase layanan secara langsung. Klien Phoenix “tipis” hanya membutuhkan akses ke Phoenix Query Server di port default 8765. Ada beberapa skrip
Gunakan langkah Amazon EMR untuk query menggunakan Phoenix
Prosedur berikut mengembalikan snapshot dari HBase dan menggunakan data tersebut untuk menjalankan kueri Phoenix. Anda dapat memperpanjang contoh ini atau membuat script baru yang memanfaatkan klien Phoenix sesuai dengan kebutuhan Anda.
-
Buat cluster dengan Phoenix diinstal, menggunakan perintah berikut:
aws emr create-cluster --name "Cluster with Phoenix" --log-uri s3://
amzn-s3-demo-bucket
/myLogFolder --release-labelemr-7.8.0
\ --applications Name=Phoenix Name=HBase --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 --use-default-roles -
Buat kemudian upload file berikut ke 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
catatan
Anda hanya perlu memasukkan
COLUMN_ENCODED_BYTES=0
dalam contoh berikut ketika Anda menggunakan Amazon EMR versi 5.26.0 dan lebih tinggi.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";
Gunakan AWS CLI untuk mengirimkan file ke 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
/ -
Membuat tabel menggunakan langkah berikut diserahkan ke cluster yang Anda buat di langkah 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 -
Gunakan
script-runner.jar
untuk menjalankan skripcopySnapshot.sh
yang sebelumnya diunggah ke bucket S3 Anda: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"]Ini menjalankan MapReduce tugas untuk menyalin data snapshot Anda ke HDFS cluster.
-
Memulihkan snapshot yang Anda disalin ke cluster menggunakan langkah berikut:
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 -
Gunakan
script-runner.jar
untuk menjalankan skriprunQuery.sh
yang sebelumnya diunggah ke bucket S3 Anda: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"]Query berjalan dan mengembalikan hasil ke langkah
stdout
. Perlu waktu beberapa menit sampai langkah ini selesai. -
Periksa hasil
stdout
di log URI yang Anda gunakan ketika Anda membuat cluster di langkah 1. Hasilnya akan terlihat seperti berikut ini:+------------------------------------------+-----------------------------------+ | 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 | +------------------------------------------+-----------------------------------+