传递jvm选项以指向oozie工作流中pig操作中的log4j.properties文件

gmol1639  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(281)

在我的oozie工作流中,有一个pig操作。
在运行时,它正在cdh中查找log4j.properties文件,因为我的jars中没有提供该文件。
现在,我随身携带了log4j.properties文件,只需要在pig操作中将其作为jvm选项传递。
有什么办法吗?

niwlg2el

niwlg2el1#

在oozie工作流中,无法将自定义log4j属性文件传递给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文件是在应用程序运行时通过从容器中读取基本log4j.properties文件并将创建的文件放置在hadoop作业appcache中创建的。

相关问题