Utilisation des fonctions définies par l'utilisateur de Hive avec EMR Serverless - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation des fonctions définies par l'utilisateur de Hive avec EMR Serverless

Les fonctions définies par l'utilisateur Hive (UDFs) vous permettent de créer des fonctions personnalisées pour traiter des enregistrements ou des groupes d'enregistrements. Dans ce didacticiel, vous allez utiliser un exemple d'UDF avec une application Amazon EMR Serverless préexistante pour exécuter une tâche qui génère un résultat de requête. Pour savoir comment configurer une application, consultezCommencer à utiliser Amazon EMR Serverless.

Pour utiliser un UDF avec EMR Serverless
  1. Accédez au GitHubpour obtenir un exemple d'UDF. Clonez le dépôt et passez à la branche git que vous souhaitez utiliser. Mettez à jour le maven-compiler-plugin dans le pom.xml fichier du référentiel pour avoir une source. Mettez également à jour la configuration de la version Java cible vers1.8. Exécutez mvn package -DskipTests pour créer le fichier JAR contenant votre exemple UDFs.

  2. Après avoir créé le fichier JAR, chargez-le dans votre compartiment S3 à l'aide de la commande suivante.

    aws s3 cp brickhouse-0.8.2-JS.jar s3://amzn-s3-demo-bucket/jars/
  3. Créez un fichier d'exemple pour utiliser l'une des fonctions UDF d'exemple. Enregistrez cette requête sous udf_example.q et chargez-la dans votre compartiment 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. Soumettez le job Hive suivant.

    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. Utilisez la get-job-run commande pour vérifier l'état de votre tâche. Attendez que l'état passe àSUCCESS.

    aws emr-serverless get-job-run --application-id application-id --job-run-id job-id
  6. Téléchargez les fichiers de sortie à l'aide de la commande suivante.

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

    Le stdout.gz fichier ressemble à ce qui suit.

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