Hadoop 在ApachePig中合并两个数据集

Hadoop 在ApachePig中合并两个数据集,hadoop,mapreduce,apache-pig,cloudera,Hadoop,Mapreduce,Apache Pig,Cloudera,我有两个hbase输入别名: X: (a1,b2) (a2,b2) ... (an,bn) Y: (c1) (c2) ... (cn) 现在我想“连接”两个别名:X的第一行与Y的第一行。最终结果应该是: RESULT: (a1,b1,c1) (a2,b2,c2) ... (an,bn,cn) 我该怎么做呢?Pig的一个基本原则是顺序无关紧要。更一般地说,关系是一组元组,而不是元组列表。如果顺序对数据很重要,那么应该反映在数据本身中,而不是通过数据的存储方式 尽管如此,如果您能够保证加载数据

我有两个hbase输入别名:

X:
(a1,b2)
(a2,b2)
...
(an,bn)

Y:
(c1)
(c2)
...
(cn)
现在我想“连接”两个别名:X的第一行与Y的第一行。最终结果应该是:

RESULT:
(a1,b1,c1)
(a2,b2,c2)
...
(an,bn,cn)

我该怎么做呢?

Pig的一个基本原则是顺序无关紧要。更一般地说,关系是一组元组,而不是元组列表。如果顺序对数据很重要,那么应该反映在数据本身中,而不是通过数据的存储方式

尽管如此,如果您能够保证加载数据时,清管器将按照您想要的顺序处理数据,那么解决方法确实存在。使用
枚举
自定义项:


如果您使用的是pig 0.11,则可以尝试使用运算符。比如:

XR = RANK X ;
YR = RANK Y ;
RESULT = JOIN XR BY $0, YR BY $0 ;

如果您只执行
RANK X
,那么它将为每一行提供一个唯一的序列号。如果您执行类似于
按$0 DESC对A排序的操作
,则可能不提供唯一的序列号。

创建一个公共联接键,例如使用REGEX\u EXTRACT,然后使用联接操作。
XR = RANK X ;
YR = RANK Y ;
RESULT = JOIN XR BY $0, YR BY $0 ;