Hive 查询语句
查询语法结构
SELECT [ALL | DISTINCT] select_expr,
select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY col_list]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BYcol_list] ]
[LIMIT [offset,] rows]
基本查询
where 条件查询
limit 限制记录数
order by 排序
Hive 中的 order by 语句和 SQL 定义是一样的,其会对查询结果集执行一个全局排序,Hive 会有一个所有的数据都通过一个reduce 进行处理的过程,对于大数据集这个过程将消耗很大的时间来执行
sort by / distrubute by 分区排序
- sort by:局部排序,只确保每个 reduce 上输出的数据为有序(如果只有一个 reduce 就与 order by 全局排序相同)
- distrubute by:按照指定列为 key 进行分区到不同的 reduce 中(默认采取的是 hash 算法)
cluster by 分区排序
如果分区字段和排序字段一样,且是升序,那么 distribute by + sort by可以使用 cluster by 替换,起到简化语句的作用
Join 关联查询
-
内连接(inner join)
-
左外连接(left join)
-
右外连接(right join)
-
全连接(full join)
-
左半连接(left semi join)
left semi join 中最后 select 的结果只许出现左表,最主要的使用场景就是实现 in/exists
注:和左连接相似,唯一的区别是不返回 t_b 数据,所以 select 子句中不能有 t_b 字段,而且只在 Hive 中有效。
group by 分组聚合
注:使用 group by 分组后,select 子句的字段只能是分组字段或聚合结果
子查询
将查询结果作为临时表,再针对临时表中进行查询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现