1. 資料探勘任務
使用者常住城市**
2. 資料倉儲任務
演出主藝人名標籤挖掘
3. mapreduce原理
4. mapreduce特別慢的原因
4.1 計算機效能
cpu、記憶體、磁碟健康、網路
4.2 i/o操作優化
資料傾斜
map、reduce數設定不合理
reduce等待過久
小檔案過多
大量的不可分塊的超大檔案
spill次數過多
merge次數過多
5. mapreduce優化方法
資料輸入
(1)合併小檔案:大量小檔案會增加map任務裝載次數,而任務裝載比較耗時
(2)採用conbinfileinputformat來作為輸入,解決輸入端大量小檔案場景。
map階段
(1)減少spill次數:通過調整io.sort.mb及sort.spill.percent引數值,增大觸發spill的記憶體上限,減少spill次數,從而減少磁碟 io。
(2)減少merge次數:通過調整io.sort.factor引數,增大merge的檔案數目,減少merge的次數,從而縮短mr處理時間。
(3)在 map 之後先進行combine處理,減少 i/o。 reduce階段
1)合理設定map和reduce數:兩個都不能設定太少,也不能設定太多。太少,會導致task等待,延長處理時間;太多,會導致 map、reduce任務間競爭資源,造成處理超時等錯誤。
(2)設定map、reduce共存:調整slowstart.completedmaps引數,使map執行到一定程度後,reduce也開始執行,減少reduce的等待時間。
(3)規避使用reduce,因為reduce在用於連線資料集的時候將會產生大量的網路消耗。
(4)合理設定reduc端的buffer,預設情況下,資料達到乙個閾值的時候,buffer中的資料就會寫入磁碟,然後reduce會從磁碟中獲得所有的資料。也就是說,buffer和reduce是沒有直接關聯的,中間多個乙個寫磁碟->讀磁碟的過程,既然有這個弊端,那麼就可以通過引數來配置,使得buffer中的一部分資料可以直接輸送到reduce,從而減少io開銷:mapred.job.reduce.input.buffer.percent,預設為0.0。當值大於0的時候,會保留指定比例的記憶體讀buffer中的資料直接拿給reduce使用。這樣一來,設定buffer需要記憶體,讀取資料需要記憶體,reduce計算也要記憶體,所以要根據作業的運**況進行調整。 io傳輸
資料傾斜問題
(1)抽樣和範圍分割槽
(2)自定義分割槽
(3)combine
6. sql題輸出中位數
select *
from
select a1.name,
a1.sales,
count(a2.sales) sales_rank
from total_sales a1, total_sales a2
where a1.sales < a2.sales or (a1.sales=a2.sales and a1.name = a2.name)
group by a1.name, a1.sales
order by a1.sales desc, a1.name desc
) as tab
where tab.sales_rank = (select (count(*)+1) div 2 from total_sales)
7. 各種排序的時間、空間、最好最壞情況
8. join的底層原理-單次迴圈如何join
9. t檢驗、f檢驗、卡方檢驗
10. 泊松分布和正態分佈的關係
11. a-b test
位元組跳動資料探勘筆試
題型 單選7道,不定項3道,程式設計3道 單選涉及linux,sql 1.怎麼解決資料傾斜 增加reduce的個數,重新設計key,有一種方案是在map階段時給key加上乙個隨機數,有了隨機數的key就不會被大量的分配到同一節點,待到reduce後再把隨機數去掉即可。使用combinner合併,co...
2016資料探勘面試總結
避免資料傾斜 引數調節 hive.map.aggr true map 端部分聚合,相當於combiner hive.groupby.skewindata true 有資料傾斜的時候進行負載均衡,當選項設定為 true。生成的查詢計畫會有兩個 mr job。第乙個 mr job 中,map 的輸出結果...
資料探勘面試之SVM
svm 上 理論知識 本文簡單講述了svm的一些小問題 0x00 前言 0x01 初始svm 問題1 你能給我講講什麼是svm嗎?回答 svm是一種二分類模型,它的基本模型是在特徵空間中尋找間隔最大化的分割超平面的線性分類器。如在下面的兩個類別中 暫且稱兩個類為黃球和紅球 我們要將其分割開的方式有多...