计数分组数据时 PIG ERROR 1070

Posted

技术标签:

【中文标题】计数分组数据时 PIG ERROR 1070【英文标题】:PIG ERROR 1070 when Count grouped data 【发布时间】:2015-09-25 06:10:17 【问题描述】:

我只想计算 2011 年每支球队有多少球员。 与 tmID 分组时效果很好。但是,当我尝试计算分组数据时,会出现 ERROR 1070。

    load_file = load 'Assignment2/basketball_players.csv' using PigStorage(',');
temp = foreach load_file generate
    (chararray)$3 AS tmID,
    (int)$1 AS year, 
    (chararray)$0 AS playerID;
fil_data = filter temp by year == 2011;
group_data = group fil_data by tmID;
count_data = foreach group_data generate group, count($1);
dump count_data;

错误信息如下所示。

<file script.pig, line 8, column 48> Failed to generate logical plan. Nested exception: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve count using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]

谁能帮我解决这个问题?谢了

【问题讨论】:

【参考方案1】:

COUNT 函数区分大小写。参考:http://pig.apache.org/docs/r0.12.0/func.html#count

试试这个:

count_data = foreach group_data generate group, COUNT($1);

建议使用别名 fil_data 而不是 $1,因为它更具可读性。

【讨论】:

【参考方案2】:

所有函数都需要大写。 foreach、generate group by 等命令可以在任何一种情况下使用。

【讨论】:

不是所有的函数都是大写的,有很多函数,比如 IsEmpty() 和所有的 DateTime 函数:AddDuration(),CurrentTime() 等,它们没有在大写中定义。

以上是关于计数分组数据时 PIG ERROR 1070的主要内容,如果未能解决你的问题,请参考以下文章

在 pig 中使用 UDF 时出现错误 1070

Apache pig Store 基于条件

PIG - 从一个大输入优化各种分组结构的最佳方法

按日期间隔大于 X 的 DATETIME 获取数据、计数和分组

JAVA 错误 1070 中的 PIG UDF

pig分组统计例子