Hive SQL 几乎是每一位互联网分析师的必备技能,相信每一位面试过大厂的童鞋都有被面试官问到 Hive 优化问题的经历。所以掌握扎实的 HQL 基础尤为重要,既能帮分析师在日常工作中“如鱼得水”提高效率,也能在跳槽时获得一份更好的工作 offer。
本篇为 Hive 入门篇,主要为 Hive SQL 基础语法介绍,文章争取做到言简意赅,让大家 30 分钟入门 HQL。
文中视角多处 HQL 对比 关系型数据库 SQL,适合有一定 SQL 基础的童鞋。(未掌握基础 SQL 童鞋请移步「w3c school - SQL」快速上手 SQL)
---------- Hive 优化篇敬请期待
一、Hive 介绍
简单来说,Hive 是基于 Hadoop 的一个数据仓库工具。
Hive 的计算基于 Hadoop 实现的一个特别的计算模型 MapReduce,它可以将计算任务分割成多个处理单元,然后分散到一群家用或服务器级别的硬件机器上,降低成本并提高水平扩展性。
Hive 的数据存储在 Hadoop 一个分布式文件系统上,即 HDFS。
需明确的是,Hive 作为数仓应用工具,对比 RDBMS(关系型数据库) 有3个“不能”:不能像 RDBMS 一般实时响应,Hive 查询延时大;
不能像 RDBMS 做事务型查询,Hive 没有事务机制;
不能像 RDBMS 做行级别的变更操作(包括插入、更新、删除)。
另外,Hive 相比 RDBMS 是一个更“宽松”的世界,比如:Hive 没有定长的 varchar 这种类型,字符串都是 string;
Hive 是读时模式,它在保存表数据时不会对数据进行校验,而是在读数据时校验不符合格式的数据设置为NULL。
二、Hive 查询语句
Hive select 常规语法与 Mysql 等 RDBMS SQL 几乎无异,下面附注语法格式,具体不做详细讲解。本节重点介绍 Hive 中出现的一些比较特殊且日常中我有用到的一些技巧给到大家参考。
2.1 附注 select 语法及语序,
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY order_condition]
[DISTRIBUTE BY distribute_condition [SORT BY sort_condition] ]
[LI