我有一个名为student的别名,数据结构是这样的(命令describe
的结果),
studentIDInt:int,courses:bag{(courseId:int,testID:int,score:int)}
然后我试图按分数过滤学生,但遇到了这样的猪解析错误,如果有人有任何好的想法,那就太棒了。感谢。
对错误消息中报告的其他元组感到困惑。
student = filter student by courses.score > 3;
incompatible types in GreaterThan Operator left hand side:bag :tuple(score:int) right hand score:int
的问候, 林
答案 0 :(得分:1)
你不能直接这样做。可能的解决方案是首先展平,过滤,然后重新组合
flat_student = foreach student generate studentIDInt, flatten(courses);
filtered_student = filter flat_student by score > 3;
final_student = group filtered_student by studentIDInt;
另一种方法是编写自定义FilterFunc,因此由您自己选择。