【发布时间】:2014-03-03 18:10:33
【问题描述】:
我是 PIG 的新手,正在尝试根据需要转换一些数据。我有两个输入文件。 首先是type.txt
客户 ID 类型 ID
100 100
101 100
102 100
103 103
104 103
现在,相同的 typeId 意味着客户是相同的。这意味着 100、102 和 104 本质上是相同的客户。
我有另一个表 (gender.txt) 存储 CustomerId 和他们各自的性别 (M/F)
CusId 性别
100M
101 万
102楼
103 米
104 百万
现在,此表意味着相同的客户 100、102 和 104(通过第一个表)没有相同的性别。所以,这意味着任何一个表都包含错误的数据
所以,最后我希望我的输出以单个文本文件的形式组合,其中包含错误数据的三列
CustomerId TypeId 性别
100 1 M
102 1楼
104 1 百万
【问题讨论】:
-
按cusid加入,按cusid typeid分组,统计每组不同性别的数量,过滤掉少于2个的组。剩下的应该是你要找的。span>
-
好吧,我最初是在尝试加载 type.txt。加载 "type.txt" AS (CusId:int, TypeId:int);然后我尝试按 TypeId 对文件进行分组。分组 = 按 (TypeId) 分组数据。现在,之后我得到的输出为 1 {100,102,104) 2 {101} 3{103} 。所以,我很困惑如何过滤并获得问题中提到的输出。
-
嗨 Fred,感谢 cmets。但是表格很大。大约有 30 亿行。此外,我无法在您提到按 cusId typeid 分组的地方获得您的第二条评论。就像 Join 完成后 groupby cusId、typeId 的输出一样。
-
3亿不小,但是用猪应该是可以的。当然是从一个样本数据集开始。
-
无论如何我们可以优化您提到的以下查询吗?另外,我有一个问题,如果我们有很多关系,比如 A、B、C、D ...直到我,性能会不会受到影响。另外,GROUP by 是否引入了新的 reduce 作业
标签: apache-pig