Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di funzioni Hive definite dall'utente con Serverless EMR
Le funzioni definite dall'utente di Hive (UDFs) consentono di creare funzioni personalizzate per elaborare record o gruppi di record. In questo tutorial, utilizzerai un esempio UDF con un'applicazione Amazon EMR Serverless preesistente per eseguire un processo che genera un risultato di query. Per informazioni su come configurare un'applicazione, consulta. Guida introduttiva ad Amazon EMR Serverless
Per utilizzare un UDF con EMR Serverless
-
Vai a GitHub
per un esempioUDF. Clona il repository e passa al ramo git che desideri utilizzare. Aggiorna il pom.xml
filemaven-compiler-plugin
nel repository per avere una fonte. Aggiorna anche la configurazione della versione java di destinazione su1.8
. Eseguimvn package -DskipTests
per creare il JAR file che contiene il tuo campioneUDFs. -
Dopo aver creato il JAR file, caricalo nel tuo bucket S3 con il seguente comando.
aws s3 cp brickhouse-0.8.2-JS.jar s3://
amzn-s3-demo-bucket
/jars/ -
Crea un file di esempio per utilizzare una delle funzioni di esempioUDF. Salva questa query con nome
udf_example.q
e caricala nel tuo bucket S3.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]; -
Invia il seguente lavoro Hive.
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/" } } }' -
Usa il
get-job-run
comando per controllare lo stato del tuo lavoro. Attendi che lo stato cambi inSUCCESS
.aws emr-serverless get-job-run --application-id
application-id
--job-run-idjob-id
-
Scarica i file di output con il seguente comando.
aws s3 cp --recursive s3://
amzn-s3-demo-bucket
/logs/applications/application-id
/jobs/job-id
/HIVE_DRIVER/ .Il
stdout.gz
file è simile al seguente.{"key1":[0,1,2],"key2":[3,4,5,6],"key3":[7,8,9]} 2