分享

pig数据去重实例

howtodown 发表于 2014-10-21 15:37:40 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 31869
本帖最后由 howtodown 于 2014-10-21 16:37 编辑


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








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



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



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



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



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






已有(6)人评论

跳转到指定楼层
落魂草 发表于 2015-1-10 11:48:22
回复

使用道具 举报

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

使用道具 举报

恋枫缩影 发表于 2015-11-16 00:12:30
不错的文章,受教了
回复

使用道具 举报

regan 发表于 2015-12-9 19:35:52
pig们,都来看看
回复

使用道具 举报

xiaosong_6666 发表于 2016-5-18 16:08:41
受教了 ,不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条