我的加入正在产生我不理解的结果。
如果它很重要或相关,我在Impala中使用Parquet Tables。
我正在做的是:
create table test1(foo string, bar int) stored as parquet;
create table test2(foo string, bar int) stored as parquet;
insert into test1 values ("something1",1);
insert into test2 values ("something2",2);
检查以确保其有效:
select * from test1;
给我输出:
+----------------------+
| foo | bar |
+----------------------+
| something1 | 1 |
+----------------------+
1 rows
并且
select * from test2;
给我输出:
+----------------------+
| foo | bar |
+----------------------+
| something2 | 2 |
+----------------------+
1 rows
到目前为止一切似乎都很好。但现在当我尝试用
加入这两个表时 select * from test1 left outer join test2 using (foo);
我明白了:
+---------------------------------------------+
| foo | bar | foo | bar |
+---------------------------------------------+
| something1 | 1 | something2 | 2 |
+---------------------------------------------+
1 rows
出乎意料。我期望输出为something1,1,null,null。不应该只在test1.foo = test2.foo?
时发生连接我也尝试使用test1.foo = test2.foo上的语法连接以及内部连接来执行此操作,并看到相同的结果。
有人可以向我解释一下这里发生了什么吗?我重读了文档,但我不明白为什么会这样。
答案 0 :(得分:0)
试试这个
select * from test1 left outer join test2 on test1.foo=test2.foo
答案 1 :(得分:0)
更新:它似乎是一个工程bug。感谢您的帮助和反馈,