加入的价值观不匹配?

时间:2017-07-22 21:28:04

标签: sql join parquet impala

我的加入正在产生我不理解的结果。

如果它很重要或相关,我在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上的语法连接以及内部连接来执行此操作,并看到相同的结果。

有人可以向我解释一下这里发生了什么吗?我重读了文档,但我不明白为什么会这样。

2 个答案:

答案 0 :(得分:0)

试试这个

select * from test1 left outer join test2 on test1.foo=test2.foo

答案 1 :(得分:0)

更新:它似乎是一个工程bug。感谢您的帮助和反馈,