检查包中是否有元素?

时间:2014-10-15 19:09:32

标签: apache-pig

如果行李包含元素,我该如何办理

示例:在一个chararray包中,如何检查是否存在令牌?

1 个答案:

答案 0 :(得分:6)

在Apache Pig中,您可以使用嵌套在FOREACH see Pig Basics中的语句。以下是文档中的示例: AB中的一个包。

X = FOREACH B {
        S = FILTER A BY 'xyz';
        GENERATE COUNT (S.$0);
}

您可以使用IsEmpty和?:operator

代替COUNT
X = 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作业。