有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Pig错误:无法分析查询

我正在尝试编写一个过滤器UDF,它将输入作为Tuple,并返回Tuple,但是当我在Gruntshell中定义函数时,我得到的错误消息是未能解析,我在这里做得不对

 REGISTER /home/filterUDF.jar;

 DEFINE filDist  'FilterDistrictUdf/FilterDistrict' 


package FilterDistrictUdf;

import java.io.IOException;

import org.apache.pig.FilterFunc;

import org.apache.pig.data.Tuple;


public class FilterDistrict extends FilterFunc{

@Override
public Boolean exec(Tuple input) throws IOException {
    String line = input.toString();
    String[] columns = line.split(",");
    Double bplObjective = Double.parseDouble(columns[2]);
    Double bplPerformance = Double.parseDouble(columns[10]);



    //Double bplObjective = (Double )input.get(2);
    //Double bplPerformance = (Double )input.get(10);
    //BigInteger mul = new BigInteger("80");
    //BigInteger div = new BigInteger("100");

    if(bplPerformance >= ( (bplObjective* 80)/100) )
        return true;
    else
        return false;


}

}

错误:

  ERROR 1200: <line 40, column 15>  Syntax error, unexpected symbol at or 
  near ''FilterDistrictUdf/FilterDistrict''

  Failed to parse: <line 40, column 15>  Syntax error, unexpected symbol at 
  or near ''FilterDistrictUdf/FilterDistrict''
   at 

  org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:244)
   at 
  org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:182)
   at org.apache.pig.PigServer$Graph.validateQuery(PigServer.java:1707)
   at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1680)
   at org.apache.pig.PigServer.registerQuery(PigServer.java:623)
   at 
   org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:1063)
   at 

组织。阿帕奇。猪工具。猪手稿。解析器。PigScriptParser。解析(PigScriptParser.java:501) 在org。阿帕奇。猪工具。咕哝GruntParser。parseStopOnError(GruntParser.java:230) 在org。阿帕奇。猪工具。咕哝GruntParser。parseStopOnError(GruntParser.java:205) 在org。阿帕奇。猪工具。咕哝咕哝run(Grunt.java:66) 在org。阿帕奇。猪主要的运行(Main.java:558) 在org。阿帕奇。猪主要的main(main.java:170) 在太阳下。反映NativeMethodAccessorImpl。invoke0(本机方法) 在

太阳。反映NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:62) 在

太阳。反映DelegatingMethodAccessorImpl。调用(DelegatingMethodAccessorImpl.ja) 弗吉尼亚州:43) 在爪哇。朗。反思。方法调用(Method.java:497) 在org。阿帕奇。hadoop。util。RunJar。main(RunJar.java:212)


共 (1) 个答案

  1. # 1 楼答案

    当我试着去做的时候,错误就来了

       DEFINE filDist  'FilterDistrictUdf/FilterDistrict' 
    

    与其定义临时函数filDist,不如直接在filter操作符中使用该函数

        chk1 = FILTER elements by FilterDistrictUdf.FilterDistrict(*)
    

    它工作正常