【问题标题】:Apache pig Store based on conditionApache pig Store 基于条件
【发布时间】:2017-02-18 15:59:22
【问题描述】:

我正在从 csv 文件中读取数据,并在对这些数据进行分组后进行计数操作。有什么方法可以将数据存储到一个文件夹名称 bad 如果计数为 0 并且如果计数 > 0 则为 good 。我尝试使用以下代码,但没有发生。

CODE : 

STORE countVal INTO '/user/cloudera/good' IF countVal > 0 ;

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

    使用函数 SPLIT。参考:

    https://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#SPLIT

    SPLIT A INTO X IF f1<7, Y IF f2==5, Z IF (f3<6 OR f3>6);
    

    【讨论】:

    • 如果我喜欢这样,那么每次创建两个文件夹。但我希望如果 countValue 为 0 则整个文件将存储到 bad 文件夹中,否则存储到 good 文件夹中。这意味着当我运行它一次时,要么创建好文件夹,要么创建坏文件夹。
    【解决方案2】:

    有几种方法:

    1)使用 split 函数根据条件进行拆分。

    如果count>0,则将数据拆分为good if (count==0);

    2) 使用 FOREACH 循环,使用 BinCond 运算符根据条件分离数据。

    X = FOREACH A GENERATE,数据,(count>0?"good":"bad");

    【讨论】:

    • 我有两个好的和坏的文件夹,我将如何使用 BinCond 运算符存储?如果计数> 0,我必须将整个文件移动到“好”文件夹,否则我必须将整个文件移动到“坏”文件夹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2021-08-16
    • 1970-01-01
    • 2015-08-04
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多