我有一个spark应用程序,我想配置使用配置文件,如spark的 spark-defaults.conf
,hbase的 hbase-site.xml
还有log4j的 log4j.properties
. 我还希望避免以编程方式添加文件。
我尝试将文件添加到我的jar中(在两个 /
以及 /conf
但是当我跑的时候 spark-submit
配置文件似乎没有任何效果。
为了进一步核实我的说法,我试着跑步 spark-shell
使用相同的jar并检查文件的内容,我发现它们被其他位置的文件覆盖: /spark-defaults.conf
以及 /log4j.properties
完全不同,而且 /conf/hbase-site.xml
保持原样的同时,它的属性(可能)被另一个jar的属性覆盖了 hbase-default.xml
.
我使用CDH5.4.0。
文件 log4j.properties
以及 spark-defaults.conf
已从加载 /etc/spark/
以及 hbase-default.xml
已从加载 /opt/cloudera/parcels/CDH-5.4.0-1.cdh5.4.0.p0.27/jars/hbase-common-1.0.0-cdh5.4.0.jar
.
有没有办法在我的配置文件上指定某种优先级?我应该在中配置文件吗 /etc/spark
(也许再加上我的 hbase-site.xml
也是吗?有没有一种方法可以将自定义目录路径添加到类路径中,使其优先于其他路径?
1条答案
按热度按时间q8l4jmvw1#
我认为不可能包括
spark-defaults.conf
放进jar里。我知道的唯一方法是在服务器上编辑文件或以编程方式添加配置设置。但对于
hbase-site.xml
其他hadoop站点配置它应该可以工作。您可以将每个site.xml放在资源目录的根目录中,并且应该加载它,除非您在spark的类路径中有一些其他site.xml,它们是首先加载的。
i、 e.如果您正在添加
hadoop classpath
或者hbase classpath
到服务器上的spark env,则它们首先在类加载器中加载,除非您使用设置spark.files.userClassPathFirst