在Pig脚本中获取意外符号

时间:2014-09-19 08:24:40

标签: hadoop apache-pig

我正在使用pig来读取文件,并希望将这些数据传递给java方法并计算记录。但我得到例外,请帮助我为什么我得到这个例外

REGISTER /user/rakeshar/test.jar
DEFINE Test com.msdw.rakesh.Test;
 temperature = LOAD 'NYQ_MWDATA_ge2_fact.csv' USING PigStorage(',') AS (period_fundmtls_id:int, metric_def_id:int, real_value:double, currency_unit_id:int, observation_type_cd:chararray, non_currency_unit_id:int);
return_val = com.msdw.rakesh.Test(temperature);
DUMP return_val;

在上面的代码中,我在第4行收到错误,下面是例外

557506 [main] ERROR org.apache.pig.tools.grunt.Grunt  - Failed to parse: <line 3, column 0>  Syntax error, unexpected symbol at or near 'return_val'
    at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:235)

请帮助我,因为我是hadoop和猪的新手。

1 个答案:

答案 0 :(得分:1)

您必须进行投影才能调用此类UDF:

return_val = FOREACH temperature GENERATE com.msdw.rakesh.Test(*);

如果您想执行某些操作,例如temperature中的记录总数

X = GROUP temperature ALL;
return_val = FOREACH XGENERATE com.msdw.rakesh.Test(temperature);

你可能知道,猪已有计数功能。另外,您需要考虑可扩展性。见http://chimera.labs.oreilly.com/books/1234000001811/ch10.html