要通过你在你的pigscript以下参数:
UDF(document, '$param1', '$param2', '$param3')
编辑:不知道如果这些PARAMS必须wrappedin '' 或不
,而在你的UDF你这样做:
public class UDF extends EvalFunc<Boolean> {
public Boolean exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return false;
FileSystem fs = FileSystem.get(UDFContext.getUDFContext().getJobConf());
String var1 = input.get(1).toString();
InputStream var1In = fs.open(new Path(var1));
String var2 = input.get(2).toString();
InputStream var2In = fs.open(new Path(var2));
String var3 = input.get(3).toString();
InputStream var3In = fs.open(new Path(var3));
return doyourthing(input.get(0).toString());
}
}
例如
是的弗雷德。但是,我如何从PigScript方传递参数? – emkay
我不知道这是不是你想要做的事情,但是你可以创建一个新的Tuple,主键作为第一个字段,你实际想要传递给你的UDF的数据作为剩余的字段:'FOREACH tupleForUdf GENERATE primarykey,*;' – Frederic