Apache Hive集合操作符: UNION和UNION ALL

x33g5p2x  于2020-12-11 发布在 Hive  
字(1.5k)|赞(0)|评价(0)|浏览(865)

你可以使用Apache Hive集运算符将两个或多个SELECT语句中的相似数据集合并成一个结果集。其中每个select的数据集中的类型必选一样。否则,你必须使用类型转换函数显式转换类型。

Apache Hive Set操作符

Hadoop Hive 目前支持如下集合运算符。

UNION [DISTINCT]
UNION ALL

1.2.0之前的Hive版本只支持UNION ALL(bag union),其中重复的行不会被消除。从1.2.0版本开始,Hive包含了可选的ALL关键字。

Hive UNION 和 UNION ALL 语法

以下是Hive UNION和UNION ALL集运算符的语法。

select Statement
{ UNION [DISTINCT] | UNION [ ALL ] } 
select Statement;

现在,我们来简单检查一下Hive UNION和UNION ALL。

Hive UNION Set Operator

UNION集操作将两个或多个类似子查询的结果合并成一个结果集,该结果集包含所有SELECT语句返回的行。试图组合的列的数据类型应该匹配。Hive的UNION集操作与JOIN不同,JOIN是将两个表中的列组合起来。

UNION集操作会从结果集中删除重复的记录。

Hive UNION集操作实例

下面的例子演示了Hive UNION设置操作。

select * from test1 
union 
select * from test2;

+-----------+-----------+--+
| _u2.col1  | _u2.col2  |
+-----------+-----------+--+
| 1         | 1         |
| 1         | 2         |
| 2         | 2         |
| 2         | 3         |
| 3         | 3         |
| 4         | 4         |
+-----------+-----------+--+
6 rows selected (2.023 seconds)

您也可以使用UNION与DISTINCT关键字。例如,考虑以下Hive查询。

select * from test1 
union distinct 
select * from test2;

+-----------+-----------+--+
| _u2.col1  | _u2.col2  |
+-----------+-----------+--+
| 1         | 1         |
| 1         | 2         |
| 2         | 2         |
| 2         | 3         |
| 3         | 3         |
| 4         | 4         |
+-----------+-----------+--+
6 rows selected (11.873 seconds)

Hive UNION ALL Set Operator

UNION ALL集操作将两个或多个类似子查询的结果合并成一个结果集,该结果集包含所有SELECT语句返回的行。试图组合的列的数据类型应该匹配。

UNION ALL集操作不会从结果集中删除重复的记录。

Hive UNION ALL集操作实例

下面的例子演示了Hive UNION ALL集的操作。

select * from test1 
union all 
select * from test2;

+-----------+-----------+--+
| _u1.col1  | _u1.col2  |
+-----------+-----------+--+
| 1         | 1         |
| 2         | 2         |
| 3         | 3         |
| 1         | 2         |
| 2         | 3         |
| 4         | 4         |
| 1         | 1         |
+-----------+-----------+--+
7 rows selected (1.178 seconds)

请注意,UNION ALL会保留重复的记录。

目前Hive不支持以下的集合操作。

INTERSECT [DISTINCT]
EXCEPT [DISTINCT] or MINUS [DISTINCT]

相关文章