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
-
Arahkan ke GitHub
untuk sampel UDF. Kloning repo dan beralih ke cabang git yang ingin Anda gunakan. Perbarui pom.xml
filemaven-compiler-plugin
dalam repositori untuk memiliki sumber. Juga perbarui konfigurasi versi java target ke1.8
. Jalankanmvn package -DskipTests
untuk membuat file JAR yang berisi sampel Anda UDFs. -
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/ -
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]; -
Kirimkan pekerjaan Hive berikut.
aws emr-serverless start-job-run \ --application-id
application-id
\ --execution-role-arnjob-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/" } } }' -
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-idjob-id
-
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.gz
File tersebut menyerupai yang berikut ini.{"key1":[0,1,2],"key2":[3,4,5,6],"key3":[7,8,9]} 2