Uso de funciones definidas por el usuario de Hive con EMR sin servidor - Amazon EMR

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
  1. Navegue hasta el UDF GitHubpara ver un ejemplo. Clone el repositorio y cambie a la rama de git que quiera usar. Actualice el maven-compiler-plugin en el archivo pom.xml del repositorio para tener una fuente. Actualice también la configuración de la versión java de destino a 1.8. Ejecute mvn package -DskipTests para crear el archivo JAR que contiene la muestra UDFs.

  2. 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/
  3. 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];
  4. Envíe el siguiente trabajo de 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. Utilice el comando get-job-run para comprobar el estado de su trabajo. Espere a que el estado cambie a SUCCESS.

    aws emr-serverless get-job-run --application-id application-id --job-run-id job-id
  6. 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