Java 拉丁语中的用户定义函数
我正在使用Java在Hadoop环境中为Pig Latin创建一个用户定义的函数UDF。我想创建多个输出文件。我尝试创建一个Java程序来输出这些CSV文件,如下所示: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
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是“用户定义的函数”,而不是“用户定义的函数”。如果你把这两者混在一起,可能会很混乱。。。不幸的是,我不知道如何编辑/更改标签只是yetDoesc:\UDF
存在吗?您有权限写入它吗?tuple参数永远不会等于字符串“age”。您必须从元组中提取元素,就像它是一个列表一样。另外,如果您没有在本地模式下运行pig,那么文件将无法写入,因为文件系统是HDFS,其中没有C驱动器