如果行李包含元素,我该如何办理piglatin?
示例:在一个chararray包中,如何检查是否存在令牌?
答案 0 :(得分:6)
在Apache Pig中,您可以使用嵌套在FOREACH see Pig Basics中的语句。以下是文档中的示例:
A
是B
中的一个包。
X = FOREACH B {
S = FILTER A BY 'xyz';
GENERATE COUNT (S.$0);
}
您可以使用IsEmpty和?:operator
代替COUNTX = FOREACH B {
S = FILTER A BY 'xyz';
GENERATE (IsEmpty(S.$0)) ? 'xyz NOT PRESENT' : 'xyz PRESENT') as present, B;
}
或者只留下包含数据的行李:
X = FOREACH B {
S = FILTER A BY 'xyz';
GENERATE B, S;
}
F = FILTER X BY not IsEmpty(S);
R = FOREACH F GENERATE B;
这将避免代价高昂的加入,因为额外的连接是额外的Map Reduce作业。