當前位置:成語大全網 - 新華字典 - 數據倉庫面試題

數據倉庫面試題

壹般數據倉庫面試會面兩輪,第壹輪壹般是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、維度建模中三種事實表的應用場景(阿裏面試)

二輪面試(待補充)