Hive 是大数据工程师的必备技能,它帮助我们解决了海量数据查询的问题,但是它保证稳定性的同时也遗留下了查询慢的问题。虽然缺点很明显,但是那么多年过去了,大数据生态圈仍然有它的一席之地,因为稳定性这个明显的优点,大家到现在为止还是喜欢用 Hive 来跑 T+1 的离线任务。
另外,大家都喜欢把常写 HiveSQL 的人戏称为“SQL BOY”,其实这是每个大数据工程师成长的必经之路,SQL 语法看似很简单,但是想要写得好其实是不容易的。看完这篇希望大家对 Hive 能有个更全面的了解。
本篇面试内容划重点:架构、JOIN、存储格式。
Hive 的架构
客户端任务提交的方式
Hive 客户端任务提交的方式主要有两种:
- Beeline 和 JDBC 提交任务的方式是类似的,会向一个 Thrift 服务(HiverServer2)来提交 SQL 代码,然后在 HiverServer2 端进行 SQL 的解析和优化,这个过程会用到 MetaStore 中的 Hive 元数据。这个步骤是通过 Driver 驱动来做的,最后 Driver 生成的是可执