星火使用類型安全的配置我有一個Spark工作,從一個配置文件中讀取數據。這個文件是一個類型安全的配置文件。與紗線
,讀取配置的代碼看起來像這樣:
ConfigFactory.load().getConfig("com.mycompany")
現在,因爲我想將文件傳遞作爲外部文件我不組裝application.conf作爲我的超級罐子的一部分
外部application.conf我想使用的內容是這樣的:
com.mycompany {
//configurations my program needs
}
這application.conf文件存在我的本地機器的文件系統上(而不是HDFS)
我使用的是1.6.1的Spark使用紗線
這是怎麼我的火花提交命令看起來像:
LOG4J_FULL_PATH=/log4j-path
ROOT_DIR=/application.conf-path
/opt/deploy/spark/bin/spark-submit \
--class com.mycompany.Main \
--master yarn \
--deploy-mode cluster \
--files $ROOT_DIR/application.conf \
--files $LOG4J_FULL_PATH/log4j.xml \
--conf spark.executor.extraClassPath="-Dconfig.file=file:application.conf" \
--driver-class-path $ROOT_DIR/application.conf \
--verbose \
/opt/deploy/lal-ml.jar
我收到的例外是:
2016-11-09 12:32:14 ERROR ApplicationMaster:95 - User class threw exception: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'com'
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'com'
at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:147)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)
at com.typesafe.config.impl.SimpleConfig.getObject(SimpleConfig.java:218)
at com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:224)
at com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:33)
at com.mycompany.Main$.main(Main.scala:36)
at com.mycompany.Main.main(Main.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:542)
而且所以我的問題是:沒有任何人知道我可以加載坐在我的本地機器上的火花提交和紗線外部類型安全application.conf文件?
我嘗試下面的一些解決方案的How to add a typesafe config file which is located on HDFS to spark-submit (cluster-mode)?和Typesafe Config in Spark,並在How to pass -D parameter or environment variable to Spark job?並沒有什麼工作
我會很感激任何方向提前一個解決這個
感謝
你應該能夠用逗號分隔的文件列表'而--files'不是指定的標誌多張倍。 – vpipkt
是的,這就是我最終做的 – Gideon
'--driver-java-options =' - Dmy.config.path = myConfigValue'' from [another answer](https://stackoverflow.com/a/28214447/519951 ) – ruhong