如何将-D参数或环境变量传递给Spark作业?

kop*_*zko 75 scala apache-spark

我想在dev/prod环境中更改Spark作业的Typesafe配置.在我看来,实现这一目标的最简单方法是转到-Dconfig.resource=ENVNAME工作岗位.然后Typesafe配置库将为我完成工作.

有没有办法直接将该选项传递给作业?或者也许有更好的方法在运行时更改作业配置?

编辑:

  • 当我--conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"spark-submit命令添加选项时没有任何反应.
  • Error: Unrecognized option '-Dconfig.resource=dev'.当我传递-Dconfig.resource=devspark-submit命令时,我得到了.

kop*_*zko 50

更改spark-submit命令行添加三个选项:

  • --files <location_to_your_app.conf>
  • --conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app'
  • --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'

  • 请注意,当spark以客户端模式提交驱动程序时,使用`--conf'spark.executor.extraJavaOptions = -Dconfig.resource = app'`选项将不起作用.请使用`--driver-java-options"-Dconfig.resource = app".请参阅[Spark配置](https://spark.apache.org/docs/latest/configuration.html). (18认同)
  • 在我使用的 Yarn 上: `--files &lt;location_to_your.conf&gt;#application.conf --driver-java-options -Dconfig.file=your.conf` files 中的 `#` 给出了与执行程序相关的名称;所以他们会看到指定的文件为 application.conf。 (2认同)

gia*_*dau 19

这是我的附加java选项运行的spark程序

/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
Run Code Online (Sandbox Code Playgroud)

正如您可以看到自定义配置文件 --files /home/spark/jobs/fact_stats_ad.conf

执行者java选项 --conf spark.executor.extraJavaOptions=-Dconfig.fuction.conf

驱动程序java选项. --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'

希望它可以帮助.


Dem*_*Ari 9

我将-D参数传递给spark执行器和驱动程序时遇到了很多问题,我在博客文章中添加了一条关于它的引用:"传递参数的正确方法是通过属性:" spark.driver.extraJavaOptions"和" spark.executor.extraJavaOptions":我已经通过了log4J配置属性和配置所需的参数.(对于我只能传递log4j配置的驱动程序).例如(写在spark-submit传递的属性文件中,带有" - properties-file"):"

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
Run Code Online (Sandbox Code Playgroud)

"

你可以阅读关于spark整体配置的博文.我也在跑Yarn.


lin*_*hrr 7

--files <location_to_your_app.conf> --conf 'spark.executor.extraJavaOptions=-Dconfig.resource=app' --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=app'

如果以这种方式编写,后者--conf将覆盖前一个,您可以通过在tab下启动作业后查看sparkUI来验证这一点Environment.

所以正确的方法是将选项放在同一行下: --conf 'spark.executor.extraJavaOptions=-Da=b -Dc=d' 如果你这样做,你会发现你的所有设置都将显示在sparkUI下.