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 子句的字段只能是分组字段或聚合结果

子查询

将查询结果作为临时表,再针对临时表中进行查询

posted @   追こするれい的人  阅读(187)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示