【问题标题】:Apache Pig conditional foreach generateApache Pig 条件 foreach 生成
【发布时间】:2016-02-23 17:14:03
【问题描述】:

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

比如说我在别名 A 中有这个数据:

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

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

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

【问题讨论】:

    标签: hadoop apache-pig cloudera


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      您可以在GENERATE 内应用UDF:

      B = FOREACH A GENERATE MyUdf(name);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多