在我的 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 操作,这是可能的。
piglog4j.properties 文件是在应用程序运行时通过从 yarn 容器读取基本 log4j.properties 文件并将创建的文件放置在 Hadoop 作业 appCache 中来创建的。
关于hadoop - 在 Oozie 工作流的 Pig Action 中传递 JVM 选项以指向 log4j.properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736950/