spark-submit 传递系统变量 或 自定义属性 的方法

现有Spark任务需要配置一些系统变量(注:并非环境变量)。
在程序中可以通过在代码中进行配置:

System.setProperty("prop", "value");

但是如果一些实际的生产环境,改动代码的话涉及到重新的测试和部署上线。这样就很麻烦了。
java普通程序可以通过 java -Dprop=value的参数来设置。
hadoop的MapReduce程序也可以通过用ToolRunner来动态加载系统变量和配置。
那么问题来了,spark任务能不能通过入参的方式修改一下系统变量呢?

查了下官网的api,发现有 –conf prop=value 的方式,但是这样只能传递指定 spark 配置属性的值。例如spark.default.parallelism=100,自定义的配置和一些系统变量配置上去日志提示会忽略这种配置。

继续翻阅,发现有–driver-java-options的配置。官网说可以给 driver 传递额外的 Java 选项。程序配置上去就ok 了,实现了类似于用-D的参数来配置程序。
具体脚本示例如下:

spark-submit \
--driver-java-options '-Djava.util.Arrays.useLegacyMergeSort=true' \
--class com.xxxxxx.recommend.similarity.SimilarityEtl \
--master yarn-cluster \
--num-executors 20 \
--driver-memory 6g \
--executor-memory 4g \
--executor-cores 2 \
--queue userqueue \
/data/task/etl/etl-similarity-1.1.4.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值