数据仓库面试题

如题所述

第1个回答  2022-06-21
一般数据仓库面试会面两轮,第一轮一般是sql技术面,第二轮就是 维度建模 和 数据治理 的问题。

一轮技术面(待补充):

1、数据倾斜:

数据倾斜一般产生的原因是数据在map端hash分配到reduce端时,某一个key的数量远大于其他的key,导致某一个reduce的处理时间较长。

1)key分布不均匀
2)数据本身就是如此
3)数据关联时没有把握好关联键

解决方案

1)参数调整:hive.map.aggr = true;hive.groupby.skewindata=true;
 当存在数据倾斜时开启负载均衡,此时会生成两个MapReduce任务,第一个MR任务会将map端产生的key随机的分配到reduce,先进行一次聚合,第二个MR任务会将第一个任务的预处理结果作为输入,将相同的key分配到同一个reduce当中。
2)sql调整:在处理大量空值导致数据倾斜的情况下,可以先将空值附一个特殊值去处理,比如给一个随机数加字符串的方式,因为空值数据是关联不上的,不会影响后期处理。

2、order by,sort by,cluster by,distribute by的区别

1)order by是全局排序,排序过程在一个reduce中进行,在数据量较大时就会很慢
2)sort by是局部排序,排序结果在同一个reduce中使有序的
3)distribute by是将数据按照字段划分到一个reduce中,一般与sort by连用进行分组排序的作用
4)cluster by除具有distribute by功能外还具有sort by的功能

order by优化(阿里面试):
1)开启严格模式,order by之后添加limit子句
2)利用sort by,在每个reduce中先排序取出top项,再把预处理结果order by输出

3、hive中内部表和外部表的区别

1)在创建表的时候,内部表是将数据移动到数据仓库指向的路径,外部表仅记录数据所在的路径,不对数据的位置做任何改变。
2)在删除表的时候,内部表会将元数据和数据都删除,外部表只删除元数据。

4、列转行、行转列

1)列转行:lateral view explode(split('column_name',','))作为一个新表
2)行转列:concat_ws(',',collect_set(column_name))

5、mapreduce运行原理

6、数据仓库分层原理(阿里面试)

7、维度建模中三种事实表的应用场景(阿里面试)

二轮面试(待补充)

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网