복붙노트

[SCALA] 어떻게 작업을 점화하는 -D 매개 변수 나 환경 변수를 전달하는 방법?

SCALA

어떻게 작업을 점화하는 -D 매개 변수 나 환경 변수를 전달하는 방법?

나는 DEV / 자극 환경에서 스파크 작업의 형태 보증 설정을 변경하고 싶습니다. 이 작업을 수행하는 가장 쉬운 방법은 작업에 -Dconfig.resource = ENVNAME을 통과하는 것입니다 날 것으로 보인다. 그런 형태 보증 설정 라이브러리는 나를 위해 일을 할 것입니다.

작업에 직접 해당 옵션을 전달하는 방법이 있습니까? 아니면 런타임에 작업 설정을 변경하는 것이 더 나은 방법은 무엇입니까?

편집하다:

해결법

  1. ==============================

    1.변경 세 가지 옵션을 추가 명령 줄을 스파크 제출 :

    변경 세 가지 옵션을 추가 명령 줄을 스파크 제출 :

  2. ==============================

    2.여기 내 스파크 프로그램은 또한 자바 옵션으로 실행됩니다

    여기 내 스파크 프로그램은 또한 자바 옵션으로 실행됩니다

    /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 = / 가정 / 스파크 / 작업 / fact_stats_ad.conf '

    그것을 할 수있는 희망이 도움이됩니다.

  3. ==============================

    3.내가 그것에 대해 내 블로그 게시물에서 견적을 추가 한 실행 프로그램과 드라이버를 촉발 -D 매개 변수를 지나가는 많은 문제가 있었다 : " 매개 변수를 전달하는 올바른 방법은 속성을 통해입니다 : "spark.driver.extraJavaOptions"와 "spark.executor.extraJavaOptions" 나는 Log4j의 구성 속성과 내가 구성에 필요한 매개 변수를 모두 통과했습니다. (드라이버에 난 단지 log4j 구성을 통과 할 수 있었다). 예를 들어 ( "-Properties 파일"로 제출 스파크 전달 특성 파일에 기록 된) : "

    내가 그것에 대해 내 블로그 게시물에서 견적을 추가 한 실행 프로그램과 드라이버를 촉발 -D 매개 변수를 지나가는 많은 문제가 있었다 : " 매개 변수를 전달하는 올바른 방법은 속성을 통해입니다 : "spark.driver.extraJavaOptions"와 "spark.executor.extraJavaOptions" 나는 Log4j의 구성 속성과 내가 구성에 필요한 매개 변수를 모두 통과했습니다. (드라이버에 난 단지 log4j 구성을 통과 할 수 있었다). 예를 들어 ( "-Properties 파일"로 제출 스파크 전달 특성 파일에 기록 된) : "

    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
    

    당신은 불꽃의 전체 구성에 대한 내 블로그 게시물을 읽을 수 있습니다. 나뿐만 아니라 원사에서 실행하고 있어요.

  4. ==============================

    4.--files --conf 'spark.executor.extraJavaOptions = -Dconfig.resource = 응용 프로그램' --conf 'spark.driver.extraJavaOptions = -Dconfig.resource = 응용 프로그램'

    --files --conf 'spark.executor.extraJavaOptions = -Dconfig.resource = 응용 프로그램' --conf 'spark.driver.extraJavaOptions = -Dconfig.resource = 응용 프로그램'

    이 방법으로 작성하는 경우, 나중에 --conf는 작업 환경 탭에서 시작 후에는 sparkUI보고이를 확인할 수 있습니다, 이전을 덮어 쓰게됩니다.

    그래서 올바른 방법은 다음과 같은 줄 아래의 옵션을 넣어하는 것입니다 : --conf 'spark.executor.extraJavaOptions = -DA -DC = D = B' 이 작업을 수행 할 경우, 당신은 모든 설정이 sparkUI 아래에 표시됩니다 찾을 수 있습니다.

  5. ==============================

    5.나는 다른 스칼라 응용 프로그램 내에서 실행 스파크 제출 명령을 통해 내 스파크 응용 프로그램을 시작하고있다. 그래서 나는 배열 등이있다

    나는 다른 스칼라 응용 프로그램 내에서 실행 스파크 제출 명령을 통해 내 스파크 응용 프로그램을 시작하고있다. 그래서 나는 배열 등이있다

    Array(".../spark-submit", ..., "--conf", confValues, ...)
    

    어디 confValues은 다음과 같습니다

    이 곳 (안) 시세 및 공간을 탈출하기 위해,하지만 이해하기 조금 까다 롭습니다. 당신은 시스템 속성 값에 대한 스파크 웹 인터페이스를 확인할 수 있습니다.

  6. ==============================

    6.

    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의 ENV 특성 파일을 읽고,하기 로컬 -Dmode = => 로컬에 SparkContext를 만드는 - .setMaster를 ( "로컬 [*]")

  7. ==============================

    7.당신을 위해 도움이 될 수 있습니다, 아래의 명령에 같은 방법을 사용합니다 -

    당신을 위해 도움이 될 수 있습니다, 아래의 명령에 같은 방법을 사용합니다 -

    나는 또한 제안 정말 도움이 점화 후 아래 제목을 갈 것이라고, 나는 시도하고 그것은 나를 위해 일한 - https://spark.apache.org/docs/latest/running-on-yarn.html

  8. ==============================

    8.원래는이 설정 파일을했다 :

    원래는이 설정 파일을했다 :

    my-app {
      environment: dev
      other: xxx
    }
    

    내 스파크 스칼라 코드에서 내 설정을로드하고있어 방법이다 :

    val config = ConfigFactory.parseFile(File<"my-app.conf">)
      .withFallback(ConfigFactory.load())
      .resolve
      .getConfig("my-app")
    

    내가 지금처럼 내 스파크 작업을 시작 할 때 형태 보증 구성 설명서와 모든 다른 답변의 말에도 불구하고이 설정과 시스템 특성 재 지정은 나를 위해 작동하지 않았다 :

    spark-submit \
      --master yarn \
      --deploy-mode cluster \
      --name my-app \
      --driver-java-options='-XX:MaxPermSize=256M -Dmy-app.environment=prod' \
      --files my-app.conf \
      my-app.jar
    

    그것이 내가 내 설정 파일을 변경했다 작동하도록하려면 :

    my-app {
      environment: dev
      environment: ${?env.override}
      other: xxx
    }
    

    다음과 같이 그것을 실행 :

    spark-submit \
      --master yarn \
      --deploy-mode cluster \
      --name my-app \
      --driver-java-options='-XX:MaxPermSize=256M -Denv.override=prod' \
      --files my-app.conf \
      my-app.jar
    
  9. from https://stackoverflow.com/questions/28166667/how-to-pass-d-parameter-or-environment-variable-to-spark-job by cc-by-sa and MIT license