2015-09-24 55 views
1

我有一個Spark應用程序,我想使用配置文件進行配置,例如Spark的spark-defaults.conf,HBase的hbase-site.xml和log4j的log4j.properties。我也想避免必須以編程方式添加文件。將Spark和Hadoop配置文件添加到JAR中?

我嘗試將文件添加到我的JAR(在//conf路徑下),但是當我運行​​時,配置文件似乎沒有任何影響。

要進一步檢查我的要求我試圖運行spark-shell用相同的JAR和檢查文件的內容,我發現,他們被文件覆蓋從其他地點:/spark-defaults.conf/log4j.properties是完全不同的,/conf/hbase-site.xml同時保持完好有(可能)的屬性被另一個JAR的hbase-default.xml覆蓋。

我使用CDH 5.4.0。
/etc/spark/加載文件log4j.propertiesspark-defaults.conf並且從/opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/jars/hbase-common-1.0.0-cdh5.4.0.jar加載hbase-default.xml

有沒有辦法在我的配置文件上指定某種優先級?我應該只配置/etc/spark中的文件(也可以添加我的hbase-site.xml)?有沒有一種方法可以將自定義目錄路徑添加到可以優先於其他目錄的類路徑中?

回答

0

我不認爲有可能將spark-defaults.conf添加到罐子中。我知道的唯一方法是編輯服務器上的文件或以編程方式添加配置設置。

hbase-site.xml和其他hadoop站點配置它應該工作。

您可以將每個site.xml放在資源目錄的根目錄下,並且應該加載它,除非在首先加載的spark類路徑中有其他site.xml。

即,如果要添加或hadoop classpathhbase classpath到服務器上的火花ENV,則它們在第一次加載的類加載器,除非要使用的設置spark.files.userClassPathFirst