Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de funciones definidas por el usuario de Hive con EMR sin servidor
Las funciones definidas por el usuario de Hive (UDFs) permiten crear funciones personalizadas para procesar registros o grupos de registros. En este tutorial, utilizará un ejemplo de UDF con una aplicación Amazon EMR sin servidor preexistente para ejecutar un trabajo que genere un resultado de consulta. Para obtener información acerca de cómo configurar una aplicación, consulte Introducción a Amazon EMR sin servidor.
Para usar una UDF con EMR sin servidor
-
Navegue hasta el UDF GitHub
para ver un ejemplo. Clone el repositorio y cambie a la rama de git que quiera usar. Actualice el maven-compiler-plugin
en el archivopom.xml
del repositorio para tener una fuente. Actualice también la configuración de la versión java de destino a1.8
. Ejecutemvn package -DskipTests
para crear el archivo JAR que contiene la muestra UDFs. -
Tras crear el archivo JAR, cárguelo a su bucket de S3 con el siguiente comando.
aws s3 cp brickhouse-0.8.2-JS.jar s3://
amzn-s3-demo-bucket
/jars/ -
Cree un archivo de ejemplo para usar una de las funciones UDF de ejemplo. Guarde esta consulta como
udf_example.q
y cárguela en su bucket de 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]; -
Envíe el siguiente trabajo de 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/" } } }' -
Utilice el comando
get-job-run
para comprobar el estado de su trabajo. Espere a que el estado cambie aSUCCESS
.aws emr-serverless get-job-run --application-id
application-id
--job-run-idjob-id
-
Descargue los archivos de salida con el siguiente comando.
aws s3 cp --recursive s3://
amzn-s3-demo-bucket
/logs/applications/application-id
/jobs/job-id
/HIVE_DRIVER/ .El archivo
stdout.gz
se parece al siguiente.{"key1":[0,1,2],"key2":[3,4,5,6],"key3":[7,8,9]} 2