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
" } } } }