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 버킷에 업로드합니다.

    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