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去重的功能,这里不用多解释大家应该也能看懂。
{:soso_e179:} 学习下哈 {:soso_e179:} 不错的文章,受教了 pig们,都来看看 受教了 ,不错
页:
[1]