Verwenden benutzerdefinierter Hive-Funktionen mit Serverless EMR - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden benutzerdefinierter Hive-Funktionen mit Serverless EMR

Mit den benutzerdefinierten Hive-Funktionen (UDFs) können Sie benutzerdefinierte Funktionen zur Verarbeitung von Datensätzen oder Datensatzgruppen erstellen. In diesem Tutorial verwenden Sie ein Beispiel UDF mit einer bereits vorhandenen Amazon EMR Serverless-Anwendung, um einen Job auszuführen, der ein Abfrageergebnis ausgibt. Informationen zum Einrichten einer Anwendung finden Sie unter. Erste Schritte mit Amazon EMR Serverless

Um eine UDF mit EMR Serverless zu verwenden
  1. Navigieren Sie zu, um ein GitHubBeispiel UDF zu finden. Klonen Sie das Repo und wechseln Sie zu dem Git-Branch, den Sie verwenden möchten. Aktualisieren Sie das maven-compiler-plugin in der pom.xml Datei des Repositorys, um eine Quelle zu haben. Aktualisieren Sie auch die Konfiguration der Ziel-Java-Version auf1.8. Führen Sie mvn package -DskipTests den Befehl aus, um die JAR Datei zu erstellen, die Ihr Beispiel enthältUDFs.

  2. Nachdem Sie die JAR Datei erstellt haben, laden Sie sie mit dem folgenden Befehl in Ihren S3-Bucket hoch.

    aws s3 cp brickhouse-0.8.2-JS.jar s3://amzn-s3-demo-bucket/jars/
  3. Erstellen Sie eine Beispieldatei, um eine der UDF Beispielfunktionen zu verwenden. Speichern Sie diese Abfrage unter udf_example.q und laden Sie sie in Ihren S3-Bucket hoch.

    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. Reichen Sie den folgenden Hive-Job ein.

    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. Verwenden Sie den get-job-run Befehl, um den Status Ihres Jobs zu überprüfen. Warten Sie, bis der Status geändert wirdSUCCESS.

    aws emr-serverless get-job-run --application-id application-id --job-run-id job-id
  6. Laden Sie die Ausgabedateien mit dem folgenden Befehl herunter.

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

    Die stdout.gz Datei ähnelt der folgenden.

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