Java 拉丁语中的用户定义函数

Java 拉丁语中的用户定义函数,java,hadoop,apache-pig,user-defined-functions,pig-udf,Java,Hadoop,Apache Pig,User Defined Functions,Pig Udf,我正在使用Java在Hadoop环境中为Pig Latin创建一个用户定义的函数UDF。我想创建多个输出文件。我尝试创建一个Java程序来输出这些CSV文件,如下所示: public String exec(Tuple input) throws IOException { if(input.equals("age")){ outputFile = new FileWriter("C:\\UDF\\output_age.csv"); }else{ ou

我正在使用Java在Hadoop环境中为Pig Latin创建一个用户定义的函数UDF。我想创建多个输出文件。我尝试创建一个Java程序来输出这些CSV文件,如下所示:

public String exec(Tuple input) 
    throws IOException {

  if(input.equals("age")){
      outputFile = new FileWriter("C:\\UDF\\output_age.csv");
  }else{
      outputFile = new FileWriter("C:\\UDF\\output_general.csv");
  }
}

但这不起作用。是否有其他方法可以做到这一点,无论是通过Java还是Pig拉丁语本身?

在编写UDF时,您需要注意数据类型。这里
exec
方法将元组作为输入。要读取元组值,需要使用
tuple.get(0)
notation。i、 e

public String exec(Tuple input) 
    throws IOException {
  String inputAge = input.get(0).toString();
  if(inputAge.equals("age")){
      // file creation logic 
      outputFile = new FileWriter("C:\\UDF\\output_age.csv");
  }else{
      // file creation logic
      outputFile = new FileWriter("C:\\UDF\\output_general.csv");
  }
}

您可以参考参考。

它在哪里失败?只是csv文件没有被创建。我建议您编辑
udf
标记?就我个人而言,我认为UDF是“用户定义的函数”,而不是“用户定义的函数”。如果你把这两者混在一起,可能会很混乱。。。不幸的是,我不知道如何编辑/更改标签只是yetDoes
c:\UDF
存在吗?您有权限写入它吗?tuple参数永远不会等于字符串“age”。您必须从元组中提取元素,就像它是一个列表一样。另外,如果您没有在本地模式下运行pig,那么文件将无法写入,因为文件系统是HDFS,其中没有C驱动器