数据仓库面试问题

数据仓库一般有两轮面试。第一轮一般是sql技术,第二轮是关于维度建模和数据治理。

技术回合(待补充):

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.三个事实表在维度建模中的应用场景(阿里访谈)

第二轮面试(待补)