Uso de funções definidas pelo usuário no Hive com o EMR Sem Servidor - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Uso de funções definidas pelo usuário no Hive com o EMR Sem Servidor

As funções definidas pelo usuário (UDFs) do Hive permitem criar funções personalizadas para processar registros ou grupos de registros. Neste tutorial, você usará um exemplo de UDF com uma aplicação do Amazon EMR Sem Servidor preexistente para executar um trabalho que gera um resultado de consulta. Para saber como configurar uma aplicação, consulte Conceitos básicos do Amazon EMR Sem Servidor.

Para usar uma UDF com o EMR Sem Servidor
  1. Navegue até o GitHubpara obter uma amostra de UDF. Clone o repositório e alterne para a ramificação git que deseja usar. Atualize o maven-compiler-plugin no arquivo pom.xml do repositório para ter uma fonte. Atualize também a configuração da versão Java de destino para 1.8. Execute mvn package -DskipTests para criar o arquivo JAR que contém sua amostra UDFs.

  2. Depois de criar o arquivo JAR, faça upload dele no bucket do S3 com o comando a seguir.

    aws s3 cp brickhouse-0.8.2-JS.jar s3://amzn-s3-demo-bucket/jars/
  3. Crie um exemplo de arquivo para usar um dos exemplos de funções de UDF. Salve a consulta como udf_example.q e faça upload dela no bucket do 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. Envie o trabalho do Hive a seguir.

    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. Use o comando get-job-run para verificar o estado do trabalho. Espere até que o estado mude para SUCCESS.

    aws emr-serverless get-job-run --application-id application-id --job-run-id job-id
  6. Faça download dos arquivos de saída com o comando a seguir.

    aws s3 cp --recursive s3://amzn-s3-demo-bucket/logs/applications/application-id/jobs/job-id/HIVE_DRIVER/ .

    O arquivo stdout.gz tem o aspecto a seguir.

    {"key1":[0,1,2],"key2":[3,4,5,6],"key3":[7,8,9]} 2