说起 Hive 大家首先自然会想到的就是 SQL ,所以现场手写 SQL 基本上也是面试的一个保留环节,这时候千万不要乱了阵脚,只要掌握 SQL 的一些常用的高阶语法,这些难题基本上都能迎刃而解,所以本章归纳总结了一些比较常用的 SQL 语法相关的面试题。另外,光会写 SQL 还是不够的,这还只能算是基本技能,要知道 Hive 的调优才能拿到高阶工程师的入场资格。
本篇面试内容划重点:Hive 调优、窗口函数、列转行。
性能问题和优化方案
造成 Hive 出现性能问题最常见的原因就是数据倾斜,数据倾斜是指计算过程中,数据分布不均匀,造成大量数据都聚集在少数的服务器上,造成了数据热点。
可能造成数据倾斜的场景:
- 关联(
t1 join t2 on t1.f1=t2.f1
):关联场景的关联字段 f1 的值分布不均匀(或者 NULL/0 这种值太多),会造成数据倾斜问题产生,大量数据被分发到少数几个 Reduce 处理。 - 分组(
group by f1
):同样 f1 值的分布不均匀会造成数据倾斜。 - 去重(
count distinct f1
)&#x