在 Hadoop 上的 Pig 中引用包中的元素

refer elements in bag in Pig on Hadoop

我有一个名为student的别名,数据结构是这样的(命令describe的结果),

studentIDInt:int,courses:bag{(courseId:int,testID:int,score:int)}

然后我想按分数筛选学生,但是遇到了这样的Pig解析错误,如果有人有什么好主意,那就太好了。谢谢

对错误消息中报告的附加元组感到困惑。

student = filter student by courses.score > 3;

incompatible types in GreaterThan Operator left hand side:bag :tuple(score:int)  right hand score:int

此致, 林

你不能直接这样做。可能的解决方案是先展平、过滤然后再分组

flat_student = foreach student generate studentIDInt, flatten(courses);
filtered_student = filter flat_student by score > 3;
final_student = group filtered_student by studentIDInt;   

另一种方法是编写自定义 FilterFunc,因此您可以选择什么。