我正在使用bash脚本中指定的spark-submit:
CLUSTER_OPTIONS=" \
--master yarn-cluster \
--files file:///${CONF_DIR}/app.conf#app.conf,file:///${CONF_DIR}/log4j-executor.xml#log4j.xml \
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j.xml" \
--driver-java-options '-Dlog4j.configuration=file:log4j.xml -Dconfig.file=app.conf' \
--keytab ${KEYTAB} \
--principal ${PRINCIPAL} \
"
我发现在收到此错误时,app conf没有被接收:
Error: Unrecognized option: -Dconfig.file=file:app.conf'
我还尝试了不同的方法来封装driver-java-options:
1)
--driver-java-options \"-Dlog4j.configuration=file:log4j.xml -Dconfig.file=app.conf\" \
Error: Unrecognized option: -Dconfig.file=file:app.conf"
2)
--driver-java-options "-Dlog4j.configuration=file:log4j.xml -Dconfig.file=file:transformation.conf" \
./start_app.sh: line 30: -Dconfig.file=file:app.conf --keytab /app/conf/keytab/principal.keytab --principal principal : No such file or directory
如何为Spark应用程序指定多个 driver-java-options ?
N.B。我使用Spark 1.5.0
答案 0 :(得分:5)
尝试使用:
{{1}}
在我的情况下,它可以很好地工作 - 使用它时的文件
您可能想要添加:
{{1}}
如果从执行程序访问文件
希望它有所帮助, 此致
答案 1 :(得分:3)
只写这个是因为它太奇怪了。我采用这种方法的方式是直到我使--driver-java-options成为所有参数的 first 为止。我按原样保留它,这样您就可以完整了。
使用pyspark 本地模式
/opt/apache-spark/spark-2.3.0-bin-hadoop2.7/bin/spark-submit \
--driver-java-options "-Xms2G -Doracle.jdbc.Trace=true -Djava.util.logging.config.file=/opt/apache-spark/spark-2.3.0-bin-hadoop2.7/conf/oraclejdbclog.properties -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1098 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.rmi.port=1095" \
--driver-memory $_driver_memory \
--executor-memory $_executor_memory \
--total-executor-cores $_total_executor_cores \
--verbose \
--jars /opt/apache-spark/jars/log4j-1.2.17.jar main.py \
--dbprefix $1 \
--copyfrom $2
希望这对某人有帮助。
答案 2 :(得分:1)
在Spark 2.3.0中工作2018
result=[05-01-2017,05-01-2017]
答案 3 :(得分:0)
在Spark 2.4.5上,由于Docker和env var传递到容器内spark-submit
包装程序而进一步复杂化:
SPARK_SUBMIT_ARGS="--conf spark.driver.host=host.docker.internal --conf spark.driver.port=46111"
然后,执行火花提交包装容器,如下所示:
docker run \
-e SPARK_SUBMIT_ARGS="${SPARK_SUBMIT_ARGS}" \
$IMAGE_NAME
SPARK_SUBMIT_ARGS
包装脚本引用了spark-submit
环境变量。
示例运行输出,配置已由驱动程序代码转储:
20/09/15 08:02:13 INFO SparkContext: Running Spark version 2.4.5
20/09/15 08:02:13 INFO SparkContext: Submitted application: rule-query-app
20/09/15 08:02:13 INFO SparkContext: Spark configuration:
spark.app.name=rule-query-app
spark.driver.host=host.docker.internal
spark.driver.port=46111
spark.jars=file:/app/rule-query-spark-app-fat.jar
spark.logConf=true
spark.master=spark://host.docker.internal:7077
spark.submit.deployMode=client
为--conf
提示提供this answer的荣誉(也已赞成!)。