每次启动Spark Standalone的master时,我都需要根据应用程序更改一组不同的配置(spark-env.sh
)。截至目前,我每次需要覆盖/更改其中的任何变量时都会编辑spark-env.sh
。
有没有办法在执行sbin/start-master.sh
时我可以在外部传递conf文件?
答案 0 :(得分:4)
将--properties-file
与自定义 Spark属性文件的路径一起使用。它默认为$SPARK_HOME/conf/spark-defaults.conf
。
$ ./sbin/start-master.sh --help
Usage: ./sbin/start-master.sh [options]
Options:
-i HOST, --ip HOST Hostname to listen on (deprecated, please use --host or -h)
-h HOST, --host HOST Hostname to listen on
-p PORT, --port PORT Port to listen on (default: 7077)
--webui-port PORT Port for web UI (default: 8080)
--properties-file FILE Path to a custom Spark properties file.
Default is conf/spark-defaults.conf.
但是,如果要设置环境变量,则必须像使用任何其他命令行应用程序一样设置它们,例如
SPARK_LOG_DIR=here-my-value ./sbin/start-master.sh
一个想法是使用SPARK_CONF_DIR
环境变量指向具有所需配置的自定义目录。
来自sbin/spark-daemon.sh(作为start-master.sh
的一部分执行):
SPARK_CONF_DIR替代配置目录。默认为$ {SPARK_HOME} / conf。
因此,请使用SPARK_CONF_DIR
并在conf
下保存自定义配置。
我刚注意到spark-daemon.sh
脚本接受了--config <conf-dir>
,因此看起来您可以使用--config
而不是SPARK_CONF_DIR
env var。
答案 1 :(得分:1)
我不太清楚您是否正在寻找配置spark程序或只是配置为在shell脚本中传递正确的参数。如果它是shell脚本可能这不是一个正确的地方,但是在spark上设置配置文件非常棘手,这取决于你运行spark程序的方式和位置。如果你是cleint模式,那么你可以在本地设置配置文件并根据你的spark程序(scala,python,java)传入你的程序,但在集群模式下它无法访问本地文件。
如果您只想将配置参数传递给spark程序,可以尝试以下示例
index