我有一個java火花應用程序,在其中我實例化一個SparkConf
對象與Spark所需的配置。目前,它看起來像這樣:從yaml文件加載Java火花配置
SparkConf conf = new SparkConf()
.setAppName(appName)
.setMaster(master)
.set("spark.executor.memory", "8g")
.set....
,主機和應用程序的名稱來自yaml
文件,其中包含應用程序的配置,使火花配置的其餘部分進行硬編碼,並設置一個在同一時間。
我的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
我想知道如果我可以用這些CONFIGS從yaml
文件設置代碼火花CONFIGS自動使用SparkConf
提供setAll()
方法,而不是將它們設置一次一個。
這是我如何從yaml
文件中讀取當前CONFIGS,但它不工作:
LinkedHashMap<String, String> sparkConf = new LinkedHashMap<>((Map<String, String>) ((Map) yaml.get("spark")).get("conf"));
我怎樣才能從yaml
文件加載spark: conf
因此它可以通過setAll()
方法一起使用?顯然,該方法需要一個類型爲:Traversable<Tuple2<String, String>>
的scala對象。
你認爲這是一個普通的Java/Scala的問題,無關與火花? –