StartJobrun API를 통해 Spark SQL 스크립트 실행 - Amazon EMR

StartJobrun API를 통해 Spark SQL 스크립트 실행

Amazon EMR on EKS 릴리스 6.7.0 이상에는 StartJobRun API를 통해 Spark SQL 스크립트를 실행할 수 있도록 Spark SQL 작업 드라이버가 포함되어 있습니다. 기존 Spark SQL 스크립트를 수정하지 않고도 StartJobRun API를 사용하여 Amazon EMR on EKS에서 Spark SQL 쿼리를 직접 실행하도록 SQL 진입점 파일을 제공할 수 있습니다. 다음 테이블에는 StartJobrun API를 통해 Spark SQL 작업에 지원되는 Spark 파라미터가 나와 있습니다.

다음 Spark 파라미터 중에서 Spark SQL 작업에 전송할 파라미터를 선택할 수 있습니다. 이러한 파라미터를 사용하여 기본 Spark 속성을 재정의합니다.

옵션 설명

--name NAME

애플리케이션 이름
--jars JARS 드라이버 및 실행 클래스 경로에 포함할 jar의 쉼표로 구분된 목록.
--packages 드라이버 및 실행기 클래스 경로에 포함할 jar의 maven 좌표에 대한 쉼표로 구분된 목록.
--exclude-packages 종속 항목 충돌을 피하기 위해 -packages에서 제공하는 종속 항목을 해결하는 동안 제외할 쉼표로 구분된 groupId:artifactId 목록.
--repositories -packages로 지정된 maven 좌표를 검색하기 위한 추가 원격 리포지토리의 쉼표로 구분된 목록.
--files FILES 각 실행기의 작업 디렉터리에 배치할 쉼표로 구분된 파일 목록.
--conf PROP=VALUE Spark 구성 속성.
--properties-file FILE 추가 속성을 로드할 파일의 경로.
--driver-memory MEM 드라이버의 메모리. 기본 1,024MB.
--driver-java-options 드라이버에 전달할 추가 Java 옵션.
--driver-library-path 드라이버에 전달할 추가 라이브러리 경로 항목.
--driver-class-path 드라이버에 전달할 추가 클래스 경로 항목.
--executor-memory MEM 실행기당 메모리. 기본 1GB.
--driver-cores NUM 드라이버가 사용하는 코어 수.
--total-executor-cores NUM 모든 실행기의 총 코어 수.
--executor-cores NUM 각 실행기가 사용하는 코어 수.
--num-executors NUM 실행할 실행기 수.
-hivevar <key=value> Hive 명령에 적용할 변수 대체(예: -hivevar A=B)
-hiveconf <property=value> 지정된 속성에 사용할 값.

Spark SQL 작업의 경우 다음 예제와 같이 start-job-run-request.json 파일을 생성하고 작업 실행에 필요한 파라미터를 지정합니다.

{ "name": "myjob", "virtualClusterId": "123456", "executionRoleArn": "iam_role_name_for_job_execution", "releaseLabel": "emr-6.7.0-latest", "jobDriver": { "sparkSqlJobDriver": { "entryPoint": "entryPoint_location", "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.driver.memory":"2G" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED", "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group", "logStreamNamePrefix": "log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://my_s3_log_location" } } } }