Apache Pig:错误2103正在进行双打工作

时间:2014-08-01 18:59:45

标签: apache-pig

我有一种关系,我们会调用A,看起来像这样

--------------------------------
id     page      item    paid
--------------------------------
1      pdp       A
1      pdp       B
1      chekcout  B       9.99
2      pdp       C
2      checkout  C       100.00

我正在尝试按ID和页面进行分组,然后使用类似

之类的内容对付费列进行求和
grpd   = GROUP A BY (id, page);
return = FOREACH grpd GENERATE FLATTEN(group), SUM(A.paid) AS total_paid:float;

操作会运行但是当我illustratedump时,Pig会抛出错误

  

错误2103:在双打上工作时出现问题

我假设Pig遇到问题,因为SUM()页面为pdp时总是NULL但是当页面结帐时,SUM()将是float类型。我尝试使用三元运算符,类似于....

B = FOREACH A GENERATE (price IS NULL ? 0 : price);

用零填写NULL,但这似乎不起作用。

1 个答案:

答案 0 :(得分:0)

您的问题不是NULL值 SUM会自动忽略它们。

我的猜测是你的问题在于你加载数据的方式,你希望结果是浮点数。您在加载数据时是否指定了数据类型?

如果您还没有指定数据类型,Pig会自动使用double作为data type。然后SUM将使用带有结果的双数据类型。

DUMP和ILLUSTRATE可能无法处理从double到long的数据类型转换。

在LOAD数据或将total_paid的数据类型更改为double时,尝试指定pay为float的数据类型。