猪计数明显导致标量在输出错误中有多行

时间:2014-04-24 00:56:23

标签: hadoop apache-pig

我有一种猪关系,可以读到像 -

这样的东西
describe A;
A:{header:(member_id, field_2,..)}

现在我想把这些成员弄清楚,所以我做了 -

A1 = FOREACH A GENERATE A.header.member_id;
A2 = LIMIT A1 10;
dump A2;

这会运行很长时间,最终导致错误 - 无法打开别名A2的迭代器。后端错误:标量在输出中有多行。

我做错了什么?

1 个答案:

答案 0 :(得分:5)

问题在于:

 A1 = FOREACH A GENERATE A.header.member_id;

您不应该在A中引用A.header.member_id。 Pig正在对A中的每个元组进行操作,因此它只能看到每个元组中的值(在这种情况下只有header)。由于Pig在此范围内没有看到A,因此会检查它是否可以使用关系(在您的示例中AA1A2是关系)而不是。但是,如果它有一行,它只能使用该关系;如果它没有产生你遇到的错误。

解决方案只是将A1更改为:

 A1 = FOREACH A GENERATE header.member_id;