Hadoop 在PIG中执行联接操作时出错?

Hadoop 在PIG中执行联接操作时出错?,hadoop,apache-pig,Hadoop,Apache Pig,我是编程界的新手,我正在学习Hadoop。在编写pig查询时,我得到了一个意想不到的输出。我尝试的问题是 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; 我正在插入输出和数据集。我的要求只是得到数据1的第一列和数据2的第一列(合并),但我得到了下面的结果 我无法插入我想要的方式 o/p: 数据集: 数据1: 1 2 4 2 8

我是编程界的新手,我正在学习Hadoop。在编写pig查询时,我得到了一个意想不到的输出。我尝试的问题是

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;
我正在插入输出和数据集。我的要求只是得到数据1的第一列和数据2的第一列(合并),但我得到了下面的结果

我无法插入我想要的方式

o/p:

数据集:

数据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
我的要求是只获取数据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

数据可能不在一行中,即1和2将在第1行中使用/t空格,然后4和2将在另一行中使用/t空格,以此类推。我无法按我希望的方式插入。您正在两列接两列。。。。为什么你期望少于4?
J = JOIN D by a LEFT OUTER, S by c;