猪 - 将jar添加到classpath

时间:2013-02-18 13:22:18

标签: hadoop apache-pig

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);

2 个答案:

答案 0 :(得分:0)

您可以尝试在提交Pig脚本的父程序中设置类路径,否则更简单就是 使用Unix脚本在执行父程序之前设置类路径,类似于CLASSPATH=$CLASSPATH:your_jars java parent_program 以上行将确保仅为执行当前程序

修改CLASSPATH变量

答案 1 :(得分:0)

添加:

PIG_CLASSPATH=your_jar_file

为:

$PIG_HOME/bin/pig