Menggunakan fungsi yang ditentukan pengguna Hive dengan EMR Tanpa Server - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan fungsi yang ditentukan pengguna Hive dengan EMR Tanpa Server

Hive user-defined functions (UDFs) memungkinkan Anda membuat fungsi kustom untuk memproses catatan atau grup rekaman. Dalam tutorial ini, Anda akan menggunakan contoh UDF dengan aplikasi Amazon EMR Tanpa Server yang sudah ada sebelumnya untuk menjalankan pekerjaan yang menghasilkan hasil kueri. Untuk mempelajari cara menyiapkan aplikasi, lihatMemulai dengan Amazon EMR Tanpa Server.

Untuk menggunakan UDF dengan EMR Serverless
  1. Arahkan ke GitHubuntuk sampel UDF. Kloning repo dan beralih ke cabang git yang ingin Anda gunakan. Perbarui pom.xml file maven-compiler-plugin dalam repositori untuk memiliki sumber. Juga perbarui konfigurasi versi java target ke1.8. Jalankan mvn package -DskipTests untuk membuat file JAR yang berisi sampel Anda UDFs.

  2. Setelah Anda membuat file JAR, unggah ke bucket S3 Anda dengan perintah berikut.

    aws s3 cp brickhouse-0.8.2-JS.jar s3://amzn-s3-demo-bucket/jars/
  3. Buat file contoh untuk menggunakan salah satu contoh fungsi UDF. Simpan kueri ini sebagai udf_example.q dan unggah ke bucket S3 Anda.

    add jar s3://amzn-s3-demo-bucket/jars/brickhouse-0.8.2-JS.jar; CREATE TEMPORARY FUNCTION from_json AS 'brickhouse.udf.json.FromJsonUDF'; select from_json('{"key1":[0,1,2], "key2":[3,4,5,6], "key3":[7,8,9]}', map("", array(cast(0 as int)))); select from_json('{"key1":[0,1,2], "key2":[3,4,5,6], "key3":[7,8,9]}', map("", array(cast(0 as int))))["key1"][2];
  4. Kirimkan pekerjaan Hive berikut.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/queries/udf_example.q", "parameters": "--hiveconf hive.exec.scratchdir=s3://amzn-s3-demo-bucket/emr-serverless-hive/scratch --hiveconf hive.metastore.warehouse.dir=s3://'$BUCKET'/emr-serverless-hive/warehouse" } }' --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.driver.cores": "2", "hive.driver.memory": "6G" } }], "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-bucket/logs/" } } }'
  5. Gunakan get-job-run perintah untuk memeriksa status pekerjaan Anda. Tunggu sampai negara berubahSUCCESS.

    aws emr-serverless get-job-run --application-id application-id --job-run-id job-id
  6. Unduh file output dengan perintah berikut.

    aws s3 cp --recursive s3://amzn-s3-demo-bucket/logs/applications/application-id/jobs/job-id/HIVE_DRIVER/ .

    stdout.gzFile tersebut menyerupai yang berikut ini.

    {"key1":[0,1,2],"key2":[3,4,5,6],"key3":[7,8,9]} 2