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
-
Accédez au GitHub
pour 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 lepom.xml
fichier du référentiel pour avoir une source. Mettez également à jour la configuration de la version Java cible vers1.8
. Exécutezmvn package -DskipTests
pour créer le fichier JAR contenant votre exemple UDFs. -
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/ -
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]; -
Soumettez le job Hive suivant.
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/" } } }' -
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-idjob-id
-
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