Apache Pig条件foreach生成

时间:2016-02-23 17:14:03

标签: hadoop apache-pig cloudera

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

比如说我在别名A:

中有这个数据
dump A;
(George, Films)
(Martin, Books)

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

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

2 个答案:

答案 0 :(得分:1)

您正在寻找SUBSTRING功能。像这样使用它:

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

在这里阅读更多相关信息

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

它会给你

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

答案 1 :(得分:0)

您可以在//run it before update query SELECT post_text FROM posts WHERE post_text REGEXP 'quote:[a-zA-Z0-9]{10}'; 中应用UDF:

    UPDATE posts
    SET post_text = 'quote:' 
    WHERE post_text REGEXP 'quote:[a-zA-Z0-9]{10}';

其中GENERATE是您编写的函数,用于执行您想要的逻辑。我没有意识到没有UDF的方法。