将JVM选项传递给Oozie Workflow中的Pig Action中的log4j.properties文件

时间:2016-09-28 02:09:35

标签: hadoop log4j apache-pig oozie

在我的Oozie工作流程中,有一个猪行动 在运行时,它正在寻找CDH中的log4j.properties文件,因为我没有在我的罐子里提供该文件。
现在,我有了log4j.properties文件,我只需要在Pig动作中将其作为JVM选项传递。
有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

无法将自定义log4j属性文件传递给Oozie工作流中的Pig操作。

PigMain.java文件禁止将以下参数作为参数传递。

static {
    DISALLOWED_PIG_OPTIONS.add("-4");
    DISALLOWED_PIG_OPTIONS.add("-log4jconf");
    DISALLOWED_PIG_OPTIONS.add("-e");
    DISALLOWED_PIG_OPTIONS.add("-execute");
    DISALLOWED_PIG_OPTIONS.add("-f");
    DISALLOWED_PIG_OPTIONS.add("-file");
    DISALLOWED_PIG_OPTIONS.add("-l");
    DISALLOWED_PIG_OPTIONS.add("-logfile");
    DISALLOWED_PIG_OPTIONS.add("-r");
    DISALLOWED_PIG_OPTIONS.add("-dryrun");
    DISALLOWED_PIG_OPTIONS.add("-P");
    DISALLOWED_PIG_OPTIONS.add("-propertyFile");
}

如果我们通过CLI运行pig脚本,而不是通过Oozie Pig操作,则可以这样做。

参考:https://github.com/apache/oozie/blob/master/sharelib/pig/src/main/java/org/apache/oozie/action/hadoop/PigMain.java

piglog4j.properties文件是在应用程序运行时创建的,方法是从yarn容器中读取基本的log4j.properties文件,并将创建的文件放在Hadoop作业appCache中。