【发布时间】:2014-10-15 19:09:32
【问题描述】:
如果包中包含元素,我如何签入piglatin?
示例:在一个 chararray 包中,如何检查是否存在令牌?
【问题讨论】:
标签: piglatin apache-pig
如果包中包含元素,我如何签入piglatin?
示例:在一个 chararray 包中,如何检查是否存在令牌?
【问题讨论】:
标签: piglatin apache-pig
在 Apache Pig 中,您可以使用嵌套在 FOREACH see Pig Basics 中的语句。以下是文档中的示例:
A 是B 中的一个包。
X = FOREACH B {
S = FILTER A BY 'xyz';
GENERATE COUNT (S.$0);
}
您可以使用 IsEmpty 和 ?: 运算符代替 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 作业。
【讨论】: