数据仓库面试题

 我来答
惟妙惟肖又恬静的彩霞2
2022-06-21 · TA获得超过629个赞
知道小有建树答主
回答量:447
采纳率:100%
帮助的人:59.5万
展开全部
一般数据仓库面试会面两轮,第一轮一般是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、维度建模中三种事实表的应用场景(阿里面试)

二轮面试(待补充)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式