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)
我正在尝试实现有条件的 foreach 生成,其中一列数据会根据输入数据发生变化。
例如,我在别名 A 中有此数据:
dump A;
(George, Films)
(Martin, Books)
如果名称以 G 开头,我想存储一个 Y。从 documentation 我知道有一个条件算术运算,但我找不到执行 'starts with X' 的方法。我认为它应该是这样的,其中 ##### 是缺失的条件。
B = FOREACH A GENERATE (##### ? "Y":"N");
您可以在 GENERATE
:
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)