在我的Oozie工作流程中,有一个猪行动
在运行时,它正在寻找CDH中的log4j.properties文件,因为我没有在我的罐子里提供该文件。
现在,我有了log4j.properties文件,我只需要在Pig动作中将其作为JVM选项传递。
有没有办法做到这一点?
答案 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操作,则可以这样做。
piglog4j.properties文件是在应用程序运行时创建的,方法是从yarn容器中读取基本的log4j.properties文件,并将创建的文件放在Hadoop作业appCache中。