hadoop - 在 Oozie 工作流的 Pig Action 中传递 JVM 选项以指向 log4j.properties 文件

标签 hadoop log4j apache-pig oozie

在我的 Oozie 工作流程中,有一个 pig Action 。
运行时,它正在 CDH 中查找 log4j.properties 文件,因为我没有在 jar 中提供该文件。
现在,我已经有了 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 中来创建的。

关于hadoop - 在 Oozie 工作流的 Pig Action 中传递 JVM 选项以指向 log4j.properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736950/

相关文章:

hadoop - PiG + Cassandra + Hadoop

hadoop - 错误修复后仍然得到 "Unable to load realm info from SCDynamicStore"

hadoop - HDFS:仅删除一个节点的数据节点目录

jboss - 为什么需要在 JBoss 中使用 isTraceEnabled() 函数?

java - Thread.interrupt() 和 java.io.InterruptedIOException

python - 在 Pig 中将关系传递给 Python UDF 时出错

java - 为什么组合器输出记录 = 0?

apache - 在基于Hadoop的大数据上有一些好的研究生水平的类项目想法是什么?

hadoop - Hadoop是否创建输入文件的多个副本,每个节点一个副本

Java:log4j 初始化错误