Apache pig 将JAR作为UDF运行Pig将返回错误101
我对Pig和Oozie还不熟悉,所以这可能是一个初学者的问题,但我到处都在寻找答案,运气不好。。。 我试图在Pig上运行一个UDF,UDF是一个带有重载eval方法的JAR(取自): 在本地(pig-f script.pig.txt)上运行此命令时,我收到了所需的结果,但在Oozie(Apache pig 将JAR作为UDF运行Pig将返回错误101,apache-pig,oozie,Apache Pig,Oozie,我对Pig和Oozie还不熟悉,所以这可能是一个初学者的问题,但我到处都在寻找答案,运气不好。。。 我试图在Pig上运行一个UDF,UDF是一个带有重载eval方法的JAR(取自): 在本地(pig-f script.pig.txt)上运行此命令时,我收到了所需的结果,但在Oozie(Oozie job-Oozie)上运行此命令时http://localhost:11000/oozie -config job.properties-run)我收到以下错误: 错误101:本地文件'myu
Oozie job-Oozie)上运行此命令时http://localhost:11000/oozie -config job.properties-run
)我收到以下错误:
错误101:本地文件'myudfs.jar'不存在
你建议我做什么
提前感谢:)参见案例4,此处:
总而言之,您可以选择三种方式:
标记指定文件的位置
标记指定文件的位置
标记,但我也尝试过使用lib文件夹,效果很好
编辑:您可能需要在文件标记中包含符号链接。e、 g.
myudfs.jar#myudfs.jar
Pig版本是0.9.3 jar在哪里?你试过使用jar的完整路径吗?是的,我试过了,包括完整路径(/full/path/to/file)、相对路径(/file),甚至只是文件名(file)然后您需要从pig脚本中删除register
语句,因为库目录中的jar会被Oozie服务器自动添加到类路径中
package myudfs;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
import org.apache.pig.impl.util.WrappedIOException;
public class UPPER extends EvalFunc<String>
{
public String exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try {
String str = (String)input.get(0);
return str.toUpperCase();
} catch(Exception e) {
throw e;
}
}
}
REGISTER myudfs.jar;
Raw = LOAD '/user/piguser/input' AS (name: chararray, age: int, gpa: int);
x = FOREACH Raw GENERATE myudfs.UPPER(name);
RMF 'output';
STORE x INTO 'output';