EMR Serverless での Hive ユーザー定義関数の使用 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EMR Serverless での Hive ユーザー定義関数の使用

Hive ユーザー定義関数 (UDF) を使用すると、レコードまたはレコードのグループを処理するカスタム関数を作成できます。このチュートリアルでは、既存の Amazon EMR Serverless アプリケーションでサンプル UDF を使用して、クエリ結果を出力するジョブを実行します。アプリケーションの設定方法については、「Amazon EMR Serverless の開始方法」を参照してください。

EMR Serverless で UDF を使用するには
  1. サンプル UDF の GitHub に移動します。リポジトリのクローンを作成し、使用する git ブランチに切り替えます。リポジトリの pom.xml ファイルの maven-compiler-plugin をソースを持つように更新します。また、ターゲットの Java のバージョン設定を 1.8 に更新します。mvn package -DskipTests を実行して、サンプル UDF を含む JAR ファイルを作成します。

  2. JAR ファイルを作成したら、次のコマンドを使用して S3 バケットに JAR ファイルをアップロードします。

    aws s3 cp brickhouse-0.8.2-JS.jar s3://amzn-s3-demo-bucket/jars/
  3. サンプルファイルを作成して、サンプルの UDF 関数のいずれかを使用します。このクエリを udf_example.q として保存し、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. 次の 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. get-job-run コマンドを使用して、ジョブの状態を確認します。状態が SUCCESS になるまで待ちます。

    aws emr-serverless get-job-run --application-id application-id --job-run-id job-id
  6. 次のコマンドを使って、出力ファイルをダウンロードします。

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

    stdout.gz ファイルは次のようなものです。

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