Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache pig 将行李作为输入传送到UDF_Apache Pig - Fatal编程技术网

Apache pig 将行李作为输入传送到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";

我想把一个包的元组传递给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";
         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