Hadoop筆試 面試題

2021-06-22 14:06:20 字數 874 閱讀 7530

該試題來自董成西彙總

1、mapreduce中排序發生在哪幾個階段??這些排序是否可以避免,為什麼??

答:乙個mapreduce作業由map階段和reduce階段兩部分組成,這兩階段會對資料排序,從這個意義上說,mapreduce框架本質就是乙個distributed sort。在map階段,在map階段,map task會在本地磁碟輸出乙個按照key排序(採用的是快速排序)的檔案(中間可能產生多個檔案,但最終會合併成乙個),在reduce階段,每個reduce task會對收到的資料排序,這樣,資料便按照key分成了若干組,之後以組為單位交給reduce()處理。很多人的誤解在map階段,如果不使用combiner便不會排序,這是錯誤的,不管你用不用combiner,map task均會對產生的資料排序(如果沒有reduce task,則不會排序, 實際上map階段的排序就是為了減輕reduce端排序負載)。由於這些排序是mapreduce自動完成的,使用者無法控制,因此,在hadoop 1.x中無法避免,也不可以關閉,但hadoop2.x是可以關閉的。

2、編寫mapreduce作業時,如何做到在reduce階段,先對key排序,再對value排序??

答:該問題通常稱為」二次排序「,最常用的方法是將value放到key中,實現乙個組合key,然後自定義key排序規則(為key實現乙個writablecomparable)

3、如何使用mapreduce實現兩個表join,可以考慮一下幾種情況:(1)乙個表大,乙個錶小(可放到記憶體中);(2)兩個表都是大表

答:第一種情況比較簡單,只需將小表放到distributedcache中即可;第二種情況常用的方法有:map-side join(要求輸入資料有序,通常使用者hbase中的資料表連線),reduce-side join,semi join(半連線),具體資料可網上查詢

筆試面試題

1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...

面試題 筆試

題1 有如下資料庫表tab 請用乙個 delete 語句,刪除 value 重複的行,每個 value 只保留 id 最小的一行。delete from tab where id notin select from select min id from tab groupby value a 好像有...

筆試面試題

1.書架上有編號為1 19的19本書,從中拿5本,問5本編號都不相鄰的拿法有多少種?使用隔板法,拿掉5本後剩下14塊板,即有15個空,使用組合15份插5份 c15 5 3003 2.1億個資料取前1萬大的整數 演算法思路 a.把1億個資料分成10000個陣列,b.求出10000個陣列的最大值,儲存到...