我有一种猪关系,可以读到像 -
这样的东西describe A;
A:{header:(member_id, field_2,..)}
现在我想把这些成员弄清楚,所以我做了 -
A1 = FOREACH A GENERATE A.header.member_id;
A2 = LIMIT A1 10;
dump A2;
这会运行很长时间,最终导致错误 - 无法打开别名A2的迭代器。后端错误:标量在输出中有多行。
我做错了什么?
答案 0 :(得分:5)
问题在于:
A1 = FOREACH A GENERATE A.header.member_id;
您不应该在A
中引用A.header.member_id
。 Pig正在对A
中的每个元组进行操作,因此它只能看到每个元组中的值(在这种情况下只有header
)。由于Pig在此范围内没有看到A
,因此会检查它是否可以使用关系(在您的示例中A
,A1
和A2
是关系)而不是。但是,如果它有一行,它只能使用该关系;如果它没有产生你遇到的错误。
解决方案只是将A1
更改为:
A1 = FOREACH A GENERATE header.member_id;