hadoop - Hive 通过删除重复项来连接两个表

标签 hadoop hive hiveql

我有两个配置单元表 -

Table1:
col1 col2
---------
1     b
2     c
3     d
Table2:
col1 col2 col3
----------------
1     b     x
1     b     y
1     b     z
2     c     x
3     d     x

正如您在表 2 中看到的,我有 col1 和 col2 的重复值。我想在选择时删除这些重复项。 我不关心 col3

我正在寻找可以给我的选择查询 -

col1 col2 col3
----------------
1     b     y
2     c     x
3     d     x

我尝试使用不同的 JOIN,但最终得到了重复的值。

最佳答案

使用GROUP BYJOIN

SELECT a.col1,
  a.col2,
  MAX(b.col3) AS col3
FROM Table1 a
JOIN Table2 b
ON a.col1 = b.col1
  AND a.col2 = b.col2
GROUP BY a.col1,
  a.col2;

I don't care about col3.

因此,如果您不希望它出现在输出中,您可以简单地使用 EXISTS

SELECT a.col1,
       a.col2
FROM   table1 a
WHERE  EXISTS (SELECT 1
               FROM   table2 b
               WHERE  a.col1 = b.col1);  

关于hadoop - Hive 通过删除重复项来连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49539727/

相关文章:

hadoop - 我们需要在所有数据节点上安装 spark worker 节点吗?

apache-spark - 表分区列多时pyspark + hive的性能

hadoop - Hive 内部表和外部表的区别?

hadoop - Hive group by 与多维数据集和 group by 在同一查询中

hadoop - 将字符串 'ddMMMyyyy' 转换为 Hive 中的日期值

hadoop - 在Hadoop环境中,谁在HDFS中创建数据拆分?

hadoop - Hadoop和x86中的Snappy编解码器

hadoop - Hive - 将数据插入分区表 : partition not found

hadoop - 从 Presto HIVE_CURSOR_ERROR 中的表中获取数据时出错

mysql - Spark 应用程序中的 Hive 中的 "Unable to alter partition"