Apache pig Store 基于条件

Posted

技术标签:

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

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

CODE : 

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

【问题讨论】:

【参考方案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,我必须将整个文件移动到“好”文件夹,否则我必须将整个文件移动到“坏”文件夹。

以上是关于Apache pig Store 基于条件的主要内容,如果未能解决你的问题,请参考以下文章

Apache Pig:基于元组成员内容的过滤器

大数据 hadoop ------ pig hiveMahouthbase

大数据Hadoop生态圈:Pig和Hive

React / Redux 主题:基于 Store State 的条件渲染

基于另一个参数的条件 where 子句

Apache Pig - 具有多个匹配条件的 MATCHES