2017-04-22 71 views
0

我是编程界的新手,我正在学习Hadoop。在写猪查询时,我得到了意想不到的输出结果。我试过的查询是我通过在PIG中执行JOIN操作来发生错误?

D = LOAD 'data1' AS (a:int,b:int); 
S = LOAD 'data2' AS (c:int,d:int); 
J = JOIN D by a, S by c; 
DUMP J; 

我插入outup和数据集。我的要求是只获得数据1和第一列数据2(组合)的第一栏,但我得到了低于

我无法插入我想要的方式。

O/P:

(1,2,1,3) 
(4,3,4,9) 
(4,3,4,6) 
(4,2,4,9) 
(4,2,4,6) 
(8,3,8,6) 
(8,3,8,9) 

数据组:

数据1:

1 2 
4 2 
8 3 
4 3 
7 2 
8 4 

数据2:

2 4 
8 9 
1 3 
2 7 
2 9 
4 6 
4 9 
+0

数据集中的数据不在一行中,即1和2将在第1行中具有/ t空间,然后4和2将在另一行中具有/ t空间,等等。我无法以我想要的方式插入。 – user2815076

+0

您将加入2栏的2列....您为什么期望小于4? –

回答

0

我的要求是ONL y获得第一列数据1和第一列数据2

然后,您需要另一个别名来提取连接的数据。

J = JOIN D by a, S by c; 
X = FOREACH J GENERATE $0, $2; 
DUMP X; 

然而,那将导致相同的数字,例如,所以我不知道这是你想要的

1 1 
4 4 
4 4 

因此,你可能要考虑外连接,所以你不要只得到匹配值

J = JOIN D by a LEFT OUTER, S by c; 

我不记得什么结果上的加入右侧,但可能是NULL

相关问题