2015-09-24 27 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