连接值不匹配?

Joined values don't match?

我的连接产生了我不理解的结果。

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

有人可以向我解释一下这是怎么回事吗?我重新阅读了文档,但我不明白为什么会这样。

试试这个

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

更新:这似乎是一个工程错误。感谢大家的帮助和反馈,all