howtodown 发表于 2014-10-21 15:37:40

pig数据去重实例

本帖最后由 howtodown 于 2014-10-21 16:37 编辑



此文首先需要对pig有一个基本的了解,pig载入的表,并非我们传统意义的表的,而是在操作中产生表。


http://www.aboutyun.com/static/image/hrline/2.gif





去重,即去除重复的记录。通常,我们使用DISTINCT来去除整行重复的记录,但是,如果我们只想用几个字段来去重,怎么做?
假设有以下数据文件:
$ cat 1.txt
1 2 3 4 uoip
1 2 3 4 jklm
9 7 5 3 sdfa
8 8 8 8 dddd
9 7 5 3 qqqq
8 8 8 8 sfew


我们要按第1、2、3、4个字段来去重,也就是说,去重结果应为:
1 2 3 4 uoip
9 7 5 3 sdfa
8 8 8 8 dddd


那么,我们可以这样做:
A = LOAD '1.txt' AS (col1: chararray, col2: chararray, col3: chararray, col4: chararray, col5: chararray);
B = GROUP A BY (col1, col2, col3, col4);
C = FOREACH B {
D = LIMIT A 1;
GENERATE FLATTEN(D);
};
DUMP C;


输出结果为:
(1,2,3,4,uoip)
(8,8,8,8,dddd)
(9,7,5,3,sdfa)


代码很简单,就是利用了GROUP时会自动对group的key去重的功能,这里不用多解释大家应该也能看懂。






落魂草 发表于 2015-1-10 11:48:22

{:soso_e179:}

幸福在途中 发表于 2015-5-24 01:41:05

学习下哈

QIDOUDOU 发表于 2015-10-21 15:05:11

{:soso_e179:}            

恋枫缩影 发表于 2015-11-16 00:12:30

不错的文章,受教了

regan 发表于 2015-12-9 19:35:52

pig们,都来看看

xiaosong_6666 发表于 2016-5-18 16:08:41

受教了 ,不错
页: [1]
查看完整版本: pig数据去重实例