Mic*_*ihs 5 java command-line apache-spark
我正在运行使用Java实现的Spark作业spark-submit
.我想传递参数给这项工作-如time-start
与time-end
参数参数化星火应用.
我试过的是使用
--conf key=value
Run Code Online (Sandbox Code Playgroud)
spark-submit
脚本的选项,但是当我尝试在我的Spark作业中读取参数时
sparkContext.getConf().get("key")
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
Exception in thread "main" java.util.NoSuchElementException: key
Run Code Online (Sandbox Code Playgroud)
此外,当我使用时,sparkContext.getConf().toDebugString()
我没有在输出中看到我的价值.
进一步注意因为我想通过Spark REST服务提交我的Spark Job,所以我不能使用OS环境变量等.
有没有可能实现这个?
由于要使用自定义属性,因此需要将属性application.jar
放在in 之后spark-submit
(例如,在spark示例中[application-arguments]
应该是您的属性。--conf
应该是spark配置属性。
--conf:键=值格式的任意Spark配置属性。对于包含空格的值,将“ key = value”用引号引起来(如图所示)。
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # options
<application-jar> \
[application-arguments] <--- here our app arguments
Run Code Online (Sandbox Code Playgroud)
所以当您这样做时:spark-submit .... app.jar key=value
在main
方法中,您将获得args[0]
as key=value
。
public static void main(String[] args) {
String firstArg = args[0]; //eq. to key=value
}
Run Code Online (Sandbox Code Playgroud)
但您想使用key value
对,则需要以某种方式解析您的app arguments
。
您可以检查Apache Commons CLI库或其他替代方法。
小智 5
Spark 配置将仅使用spark
命名空间中的键。如果您不想使用独立的配置工具,您可以尝试:
--conf spark.mynamespace.key=value
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9771 次 |
最近记录: |