【发布时间】:2016-09-13 20:25:16
【问题描述】:
我有一个 java spark 应用程序,我在其中使用 Spark 所需的配置实例化了一个 SparkConf 对象。目前,它看起来像这样:
SparkConf conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
.set("spark.executor.memory", "8g")
.set....
master 和 app 名称来自一个包含 app 配置的 yaml 文件,其余的 spark 配置是硬编码的,一次设置一个。
我的yaml 文件还包含 Spark 的这些键/值对配置。我的其他(python)应用程序直接从这里使用 spark 配置。它看起来像这样:
spark:
master: ...
appname: ...
conf:
spark.mesos.executor.home: '/data/spark'
spark.executor.memory: '8g'
spark.network.timeout: '420'
... other spark configs
我想知道是否可以使用yaml 文件中的这些配置,使用SparkConf 提供的setAll() 方法在代码中自动设置火花配置,而不是一次设置一个。
这就是我目前从yaml 文件中读取配置的方式,但它不起作用:
LinkedHashMap<String, String> sparkConf = new LinkedHashMap<>((Map<String, String>) ((Map) yaml.get("spark")).get("conf"));
如何从yaml 文件加载spark: conf,以便setAll() 方法可以使用它?显然,该方法需要一个 scala 类型的对象:Traversable<Tuple2<String, String>>。
【问题讨论】:
-
你认为这是一般的 Java/Scala 问题,与 Spark 无关吗?
标签: java scala apache-spark yaml