为EMR集群中的apache spark作业自定义log4j

时间:2017-09-13 12:55:20

标签: java apache-spark jar log4j emr

我有一个关于在Java作为Spark作业使用log4j及其配置文件log4j.properties的问题。

我已将log4j.properties与我的Spark工作联系起来" jar"文件,在提交到EMR集群后,我的应用程序将初始化log4j.properties文件。

这是我的示例代码:

 public static void initializeLogger() {
            try {
                Properties logProperties = new Properties();
                logProperties.load(RddReadUtils.class.getClassLoader()
    .getResourceAsStream("resources/log4j.properties"));
                PropertyConfigurator.configure(logProperties);

            } catch (IOException e) {
                e.printStackTrace();
            }

        }

在我的本地计算机上它可以工作,在EMR集群中不起作用。任何人都可以帮忙吗?
非常感谢

1 个答案:

答案 0 :(得分:0)

在群集上运行作业时,log4j将使用群集内配置的属性文件。这是有道理的,因为你的工作可以更加独立于环境。

但是,如果要使用特定属性文件,可以执行以下操作:

  • 将log4j.properties文件放在群集中的某个位置
  • 使用配置参数运行您的作业,指向属性文件。

假设您使用spark-submit运行您的作业,您可以按如下方式执行:

AngularJS