Spark 及 Hive 中的 Union 猜想(有待更详细验证)

本文探讨了Hive和Spark SQL在处理UNION操作时的不同策略。Hive在使用UNION时会自动进行GROUP BY操作,而Spark则可能为相同表的字段添加数字标识以区分。同时,解释了Hive在Map和Reduce阶段的数据处理方式。通过对查询计划的分析,揭示了两种系统在执行相同SQL语句时的内在差异。
摘要由CSDN通过智能技术生成

Hive 2.x

-- 这句sql在hive中是无法执行的。
explain select id,id from people
union
select id,id from people

报错:
在这里插入图片描述
查看近似sql的查询计划。

Hive在使用union,自动做了group by
explain select city from test.student
union
select name from test.citys;

结合:
explain select city from test.student group by city;
explain select city,city from test.student group by city;
explain select city,city from test.student group by city,city;

Hive在扫描不同/相同表时,采用的都是相同的临时变量名作为Map的输出。无法区分不同表的id.
在这里插入图片描述
Reduce时直接用Map输出的临时变量进行处理。
在这里插入图片描述
猜测:
在这里插入图片描述

Spark-Emr版本

explain select id,id from people
union
select id,id from people

在这里插入图片描述

spark在生成执行计划的时候,尽管是相同表的相同的id,但会添加上不同的数字标注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值