Pig将通过(pigserver.registerjar
)注册的所有罐子组合成一个job.jar。这实际上删除了META-INF/MANIFEST.MF
。
我们有一个UDF,它查找包含预定义属性的MANIFEST.MF
的jar(我们的jar中包含一个)。当Pig删除此MANIFEST.MF
时,我们的UDF停止工作。
有没有办法将jar添加到classpath而不是registerjar?或者有什么方法可以克服这个问题吗?
以下是代码段:
cluster = new Cluster(new PigContext(ExecType.MAPREDUCE,properties));
PigServer pigServer = new PigServer(ExecType.MAPREDUCE,properties);
pigServer.registerJar("xyz.jar");
PigTest pigTest = new PigTest(pigFile, args, pigServer, cluster);
pigTest.assertOutput("xxyyzz", jsonString);
答案 0 :(得分:0)
您可以尝试在提交Pig脚本的父程序中设置类路径,否则更简单就是
使用Unix脚本在执行父程序之前设置类路径,类似于CLASSPATH=$CLASSPATH:your_jars java parent_program
以上行将确保仅为执行当前程序
答案 1 :(得分:0)
添加:
PIG_CLASSPATH=your_jar_file
为:
$PIG_HOME/bin/pig