Hadoop 在PIG中执行联接操作时出错?
我是编程界的新手,我正在学习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
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;