dev / prod 환경에서 Spark 작업의 Typesafe 구성 을 변경하고 싶습니다 . 이것을 달성하는 가장 쉬운 방법 -Dconfig.resource=ENVNAME
은 작업 에 전달 하는 것 같습니다. 그런 다음 Typesafe 구성 라이브러리가 나를 위해 작업을 수행합니다.
해당 옵션을 작업에 직접 전달할 방법이 있습니까? 아니면 런타임에 작업 구성을 변경하는 더 좋은 방법이 있습니까?
편집하다:
- spark-submit 명령에
--conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"
옵션을 추가해도 아무 일도 일어나지 않습니다 . - 내가 가지고
Error: Unrecognized option '-Dconfig.resource=dev'.
내가 통과 할 때-Dconfig.resource=dev
에 스파크 제출 명령을 사용합니다.
답변
spark-submit
세 가지 옵션을 추가하여 명령 줄을 변경합니다 .
--files <location_to_your_app.conf>
--conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
--conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'
답변
다음은 추가 Java 옵션으로 실행되는 내 스파크 프로그램입니다.
/home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \
--files /home/spark/jobs/fact_stats_ad.conf \
--conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf \
--conf 'spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH -Dalluxio.user.file.write.location.policy.class=alluxio.client.file.policy.MostAvailableFirstPolicy -Dconfig.file=/home/spark/jobs/fact_stats_ad.conf' \
--class jobs.DiskDailyJob \
--packages com.databricks:spark-csv_2.10:1.4.0 \
--jars /home/spark/jobs/alluxio-core-client-1.2.0-RC2-jar-with-dependencies.jar \
--driver-memory 2g \
/home/spark/jobs/convert_to_parquet.jar \
AD_COOKIE_REPORT FACT_AD_STATS_DAILY | tee /data/fact_ad_stats_daily.log
사용자 정의 구성 파일을 볼 수 있듯이
--files /home/spark/jobs/fact_stats_ad.conf
실행자 자바 옵션
--conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf
드라이버 자바 옵션.
--conf 'spark.driver.extraJavaOptions=-Dalluxio.user.file.writetype.default=CACHE_THROUGH -Dalluxio.user.file.write.location.policy.class=alluxio.client.file.policy.MostAvailableFirstPolicy -Dconfig.file=/home/spark/jobs/fact_stats_ad.conf'
도움이되기를 바랍니다.
답변
스파크 실행자와 드라이버에 -D 매개 변수를 전달하는 데 많은 문제가 있었기 때문에 내 블로그 게시물에서 인용문을 추가했습니다. “매개 변수를 전달하는 올바른 방법은 속성을 사용하는 것입니다.” spark.driver.extraJavaOptions
“및” spark.executor.extraJavaOptions
“: log4J 구성 등록 정보와 구성에 필요한 매개 변수를 모두 전달했습니다. (드라이버에 log4j 구성 만 전달할 수있었습니다.) 예를 들어, “—를 사용하여 spark-submit에 전달 된 등록 정보 파일에 작성되었습니다. 속성 파일 “) :”
spark.driver.extraJavaOptions –Dlog4j.configuration=file:///spark/conf/log4j.properties -
spark.executor.extraJavaOptions –Dlog4j.configuration=file:///spark/conf/log4j.properties -Dapplication.properties.file=hdfs:///some/path/on/hdfs/app.properties
spark.application.properties.file hdfs:///some/path/on/hdfs/app.properties
“
Spark의 전체 구성에 대한 내 블로그 게시물을 읽을 수 있습니다 . 나는 Yarn에서도 실행 중입니다.
답변
--files <location_to_your_app.conf>
--conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
--conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'
이런 식으로 작성하면 나중에 --conf
이전 항목을 덮어 쓰게되며 작업이 시작된 후 Environment
탭 에서 sparkUI를보고이를 확인할 수 있습니다 .
따라서 올바른 방법은 다음과 같은 동일한 줄에 옵션을 배치하는 것입니다. 이렇게
--conf 'spark.executor.extraJavaOptions=-Da=b -Dc=d'
하면 모든 설정이 sparkUI 아래에 표시됩니다.
답변
다른 Scala 애플리케이션 내에서 시작된 spark-submit 명령을 통해 Spark 애플리케이션을 시작하고 있습니다. 그래서 나는 같은 배열이 있습니다
Array(".../spark-submit", ..., "--conf", confValues, ...)
어디에 confValues
:
- 대한
yarn-cluster
모드 :
"spark.driver.extraJavaOptions=-Drun.mode=production -Dapp.param=..."
- 대한
local[*]
모드 :
"run.mode=development"
하지만 따옴표와 공백을 이스케이프 할 위치 (아님)를 이해하는 것은 약간 까다 롭습니다. Spark 웹 인터페이스에서 시스템 속성 값을 확인할 수 있습니다.
답변
spark-submit --driver-java-options "-Denv=DEV -Dmode=local" --class co.xxx.datapipeline.jobs.EventlogAggregator target/datapipeline-jobs-1.0-SNAPSHOT.jar
위의 명령은 저에게 효과적입니다.
-Denv=DEV
=> DEV 환경 속성 파일 읽기,
-Dmode=local
=> 로컬에 SparkContext 생성-.setMaster ( “local [*]”)
답변
아래 명령과 같은 방법을 사용하면 도움이 될 수 있습니다.
spark-submit –master local [2] –conf ‘spark.driver.extraJavaOptions = Dlog4j.configuration = file : /tmp/log4j.properties’–conf
‘spark.executor.extraJavaOptions = -Dlog4j.configuration = file : /tmp/log4j.properties ‘
–class com.test.spark.application.TestSparkJob target / application-0.0.1-SNAPSHOT-jar-with-dependencies.jar prod
나는 시도했고 그것은 나를 위해 일했다. 정말 도움이되는 스파크 게시물 아래 제목을 살펴볼 것을 제안합니다-https:
//spark.apache.org/docs/latest/running-on-yarn.html