数据仓库面试问题
技术回合(待补充):
1,数据倾斜:
数据偏斜的一般原因是当数据从map端分发到reduce端时,某个键的数量远大于其他键,导致某个reduce的处理时间较长。
1)密钥分布不均匀。
2)数据本身是这样的
3)没有正确掌握数据关联键。
解决办法
1)参数调整:hive . map . aggr = true;hive . group by . skewin data = true;
?当出现数据倾斜时,负载平衡就会打开。此时,将生成两个Mapreduce任务。第一个MR任务会随机分配map端生成的密钥进行还原,并进行第一次聚合。第二个MR任务将把第一个任务的预处理结果作为输入,并将相同的键分配给相同的Reduce。
2)sql调整:在处理大量空值的情况下,可以先给空值附加一个特殊值,比如给随机数加一个字符串,因为空值数据无法关联,不会影响后期处理。
2.排序依据、排序依据、分类依据和分布依据之间的区别。
1)order by是全局排序,排序过程是在reduce中进行的,数据量大的时候会比较慢。
2)sort by是局部排序,排序结果以相同的reduce排序。
3)distribute by是根据字段将数据划分为一个reduce,通常与sort by一起使用,用于分组和排序。
4)聚类依据除了具有分布依据功能外,还具有排序依据功能。
优化排序(阿里面试):
1)开启严格模式,在order by后增加一个limit子句。
2)使用sort by,首先在每个reduce中排序出前几项,然后按顺序输出预处理结果。
3.hive中内部表和外部表的区别。
1)创建表时,内部表是指数据移动到数据仓库的路径,外部表只记录数据所在的路径,不对数据的位置做任何改变。
2)删除表时,内部表会同时删除元数据和数据,外部表只会删除元数据。
4.列到列,行到列
1)列更改:侧视图分解(拆分(' column _ name ',','))为新表。
2)行到列:concat _ ws(',',collect _ set (column _ name))
5、mapreduce操作原理
6.数据仓库的分层原理(阿里访谈)
7.三个事实表在维度建模中的应用场景(阿里访谈)
第二轮面试(待补)