3

Pig 将通过 ( pigserver.registerjar) 注册的所有 jar 合并到一个单独的 job.jar 中。这实际上删除了META-INF/MANIFEST.MF.

我们有一个 UDF,它查找MANIFEST.MF包含预定义属性的 jar(我们的一个 jar 包含此属性)。当 Pig 删除它时,MANIFEST.MF我们的 UDF 停止工作。

有没有办法将 jar 添加到类路径而不是 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);
4

2 回答 2

0

您可以尝试在提交 Pig 脚本的父程序中设置类路径,或者更简单的方法是使用 Unix 脚本在执行父程序之前设置类路径,类似于 CLASSPATH=$CLASSPATH:your_jars java parent_program 上面的行将确保 CLASSPATH变量被修改只是为了执行当前程序

于 2013-07-16T11:06:29.580 回答
0

添加:

PIG_CLASSPATH=your_jar_file

至:

$PIG_HOME/bin/pig
于 2017-04-17T09:21:53.177 回答