在 Oozie Workflow 的 Pig Action 中传递 JVM 选项以指向 log4j.properties 文件

Pass JVM options to point to log4j.properties file in Pig Action in Oozie Workflow

在我的 Oozie 工作流程中,有一个猪动作。
虽然 运行,它正在 CDH 中寻找 log4j.properties 文件,因为我没有在我的 jars 中提供该文件。
现在,我有了 log4j.properties 文件,我只需要将它作为 Pig 操作中的 JVM 选项传递。
有什么办法吗?

无法将自定义 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 中创建的。