在配置单元中使用 Null 检查的左外连接查询不起作用
Left outer join query with Null check in hive is not working
我编写了一个查询来查找存在于一个 table 而另一个不存在的记录。这是查询
CREATE TABLE kai_prod.Held1Miss AS
SELECT distinct jndheld.icerecordid from
(
SELECT held1.icerecordid,held2.icerecordid icerecordid2
FROM kai_prod.tblheld116 held1 LEFT OUTER JOIN
kai_prod.tblheld216 held2 ON
held1.icerecordid = held2.icerecordid
) jndheld
WHERE jndheld.icerecordid2 IS NULL;
我在 kai_prod.Held1Miss
中得到的计数是 266585
然而,当我使用下面的查询仔细检查时,我发现上面的计数是错误的。上面的计数应该是零
select count(*) from kai_prod.tblheld116 INNER JOIN
kai_prod.Held1Miss ON
tblheld116.icerecordid = Held1Miss.icerecordid;
266585
这是配置单元中的错误还是 NUll 的问题?
请查找版本详情。
我们运行在 Azure 中的 Microsoft HDInsight 发行版上使用 spark 来安装 hadoop
配置单元--版本
配置单元 1.2.1000.2.6.2.3-1
颠覆 git://ctr-e134-1499953498516-137771-01-000004.hwx.site/grid/0/jenkins/workspace/HDP-parallel-ubuntu16/SOURCES/hive -r 4e24791861b0ce72f1185e572ffe1fd7f737dfdd
由 jenkins 于 9 月 14 日星期四 08:04:15 UTC 2017 编译
来自带有校验和的源代码 77da03c67efbe84d5e5b69bd4d91ad54
hadoop 版本
Hadoop 2.7.3.2.6.2.3-1
颠覆 git@github.com:hortonworks/hadoop.git -r 1ceeb58bb3bb5904df0cbb7983389bcaf2ffd0b6
jenkins 于 2017-09-14T07:25Z 编译
使用 protoc 2.5.0 编译
来自带有校验和的源代码 90b73c4c185645c1f47b61f942230
此命令是 运行 使用 /usr/hdp/2.6.2.3-1/hadoop/hadoop-common-2.7.3.2.6.2.3-1.jar
Left Outer Join 将始终从左侧生成行 table。
请使用内部联接获取所需结果。
谢谢
我认为你的第二个 sql 可能是错误的:
select count(*) from kai_prod.tblheld116 INNER JOIN
kai_prod.Held1Miss ON
tblheld116.icerecordid = Held1Miss.icerecordid;
您应该加入 table kai_prod.tblheld216 而不是 kai_prod.tblheld116 以仔细检查空密钥
我编写了一个查询来查找存在于一个 table 而另一个不存在的记录。这是查询
CREATE TABLE kai_prod.Held1Miss AS
SELECT distinct jndheld.icerecordid from
(
SELECT held1.icerecordid,held2.icerecordid icerecordid2
FROM kai_prod.tblheld116 held1 LEFT OUTER JOIN
kai_prod.tblheld216 held2 ON
held1.icerecordid = held2.icerecordid
) jndheld
WHERE jndheld.icerecordid2 IS NULL;
我在 kai_prod.Held1Miss
中得到的计数是 266585然而,当我使用下面的查询仔细检查时,我发现上面的计数是错误的。上面的计数应该是零
select count(*) from kai_prod.tblheld116 INNER JOIN
kai_prod.Held1Miss ON
tblheld116.icerecordid = Held1Miss.icerecordid;
266585
这是配置单元中的错误还是 NUll 的问题?
请查找版本详情。
我们运行在 Azure 中的 Microsoft HDInsight 发行版上使用 spark 来安装 hadoop
配置单元--版本 配置单元 1.2.1000.2.6.2.3-1 颠覆 git://ctr-e134-1499953498516-137771-01-000004.hwx.site/grid/0/jenkins/workspace/HDP-parallel-ubuntu16/SOURCES/hive -r 4e24791861b0ce72f1185e572ffe1fd7f737dfdd 由 jenkins 于 9 月 14 日星期四 08:04:15 UTC 2017 编译 来自带有校验和的源代码 77da03c67efbe84d5e5b69bd4d91ad54
hadoop 版本 Hadoop 2.7.3.2.6.2.3-1 颠覆 git@github.com:hortonworks/hadoop.git -r 1ceeb58bb3bb5904df0cbb7983389bcaf2ffd0b6 jenkins 于 2017-09-14T07:25Z 编译 使用 protoc 2.5.0 编译 来自带有校验和的源代码 90b73c4c185645c1f47b61f942230 此命令是 运行 使用 /usr/hdp/2.6.2.3-1/hadoop/hadoop-common-2.7.3.2.6.2.3-1.jar
Left Outer Join 将始终从左侧生成行 table。
请使用内部联接获取所需结果。
谢谢
我认为你的第二个 sql 可能是错误的:
select count(*) from kai_prod.tblheld116 INNER JOIN
kai_prod.Held1Miss ON
tblheld116.icerecordid = Held1Miss.icerecordid;
您应该加入 table kai_prod.tblheld216 而不是 kai_prod.tblheld116 以仔细检查空密钥