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 次 |
| 最近记录: |