我是 Pig 和 Oozie 的新手,所以这可能是一个初学者的问题,但我到处寻找答案,但没有运气......我正在尝试在 Pig 上运行 UDF,UDF 是一个带有 eval 的 JAR方法重载(取自http://wiki.apache.org/pig/UDFManual):
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;
}
}
}
而 Pig 脚本是:
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';
在本地(pig -f script.pig.txt)上运行它时,我收到了想要的结果,但是在 Oozie(oozie job -oozie http://localhost:11000/oozie -config job.properties -run
)上运行它时,我收到以下错误:
错误 101:本地文件“myudfs.jar”确实不存在。
你会建议我做什么?
提前致谢 :)