Apache Pig 条件 foreach 生成

Apache Pig conditional foreach generate

我正在尝试实现有条件的 foreach 生成,其中一列数据会根据输入数据发生变化。

例如,我在别名 A 中有此数据:

dump A;
(George, Films)
(Martin, Books)

如果名称以 G 开头,我想存储一个 Y。从 documentation 我知道有一个条件算术运算,但我找不到执行 'starts with X' 的方法。我认为它应该是这样的,其中 ##### 是缺失的条件。

B = FOREACH A GENERATE (##### ? "Y":"N");

您可以在 GENERATE:

内应用 UDF
B = FOREACH A GENERATE MyUdf(name);

其中 MyUdf 是您编写的用于执行所需逻辑的函数。我不知道没有 UDF 的方法。

您正在查找 SUBSTRING 函数。像这样使用它:

b = foreach a generate [=10=].., (SUBSTRING([=10=],0,1)=='G'?'y':'n');

在此处阅读更多相关信息

https://pig.apache.org/docs/r0.9.1/func.html#substring

它会给你

(George,Films,y)
(Martin,Books,n)