向jar添加spark和hadoop配置文件?

0mkxixxg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(400)

我有一个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 也是吗?有没有一种方法可以将自定义目录路径添加到类路径中,使其优先于其他路径?

q8l4jmvw

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

相关问题