Apache pig 将行李作为输入传送到UDF
我想把一个包的元组传递给UDF 我有这个数据结构,所有元素都是两个包(Apache pig 将行李作为输入传送到UDF,apache-pig,Apache Pig,我想把一个包的元组传递给UDF 我有这个数据结构,所有元素都是两个包(x和y)的元组(arg): 然后,我写了一篇UDF: public class MyUDF extends EvalFunc<String> { public String exec(Tuple input) throws IOException { if(input == null || input.size() == 0) return "empty";
x
和y
)的元组(arg
):
然后,我写了一篇UDF:
public class MyUDF extends EvalFunc<String> {
public String exec(Tuple input) throws IOException {
if(input == null || input.size() == 0)
return "empty";
try{
DataBag ref_regions = (DataBag)input.get(0);
return "OK";
}catch(Exception e){
System.err.println(e.getMessage());
return null;
}
}
}
不幸的是,我得到了这个错误:
org.apache.pig.data.BinSedesTuple cannot be cast to org.apache.pig.data.DataBag
它由catch
语句打印
你能帮我修一下吗?你在运行什么版本的pig? 这是0.8.1之前的问题
BinSedes通常在读取您创建的测试文件时被调用-我建议在您的UDF中将元组输入更改为数据包输入。arg不是一个包,而是一个元组,因此您会得到一个异常
res = foreach data generate MyUDF(arg);
org.apache.pig.data.BinSedesTuple cannot be cast to org.apache.pig.data.DataBag