Utilizzo di funzioni Hive definite dall'utente con Serverless EMR - Amazon EMR

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
  1. Vai a GitHubper un esempioUDF. Clona il repository e passa al ramo git che desideri utilizzare. Aggiorna il pom.xml file maven-compiler-plugin nel repository per avere una fonte. Aggiorna anche la configurazione della versione java di destinazione su1.8. Esegui mvn package -DskipTests per creare il JAR file che contiene il tuo campioneUDFs.

  2. 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/
  3. 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];
  4. Invia il seguente lavoro Hive.

    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. 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-id job-id
  6. 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