關於reduce和hive的一些疑問

2022-07-30 16:15:10 字數 941 閱讀 5884

reduce:相同的key為一組,呼叫乙個reduce。我們知道,map端輸出的資料為kvp,其中p是根據使用者自己定義的辦法指定該組kv使用哪個reuduce的,比如天氣的例子,有三個reduce,那麼使用者用key中的年份來除以p得到的餘數來確定使用哪個reduce來處理該組資料。p的值分別為0,1,2。

如何判斷哪些key為一組呢?使用使用者自定義的分組比較器。同乙個組一定在乙個reduce上來執行,不同的組也可能在同乙個reduce上執行。

map有多個,每個map輸出的資料都是內部有序的,但是可能包含多個組。shuffle取資料的時候,面對的是內部有序外部無序的多個檔案,所以首先要做乙個歸併。

問題來了:

對於天氣問題來說,假設兩個map輸出的資料分別是這樣的:

map1:   2008-5-1 38   2008-5-3   37   2008-5-2   36    2008-4-1 41 2008-4-1 39 2008-3-1 16

map2:   2008-5-2 39   2008-5-2   37.5   2008-5-2   36    2008-4-1 41 2008-4-1 39 2008-3-1 16

假設shuffle真的不排序,只做歸併,就是只把相同的key歸為一組的話,那麼,5月份這個組得到的資料就是:2008-5-1 38   2008-5-3   37   2008-5-2   362008-5-2 39   2008-5-2   37.5   2008-5-2   36 這樣就會出錯,因此可以斷定shuffle一定是經歷了排序的。最終的資料必須是這樣的:2008-5-2 392008-5-1 382008-5-2   37.52008-5-3   372008-5-2   362008-5-2   36

Hive 設定map 和 reduce 的個數

一 控制hive任務中的map數 1.通常情況下,作業會通過input的目錄產生乙個或者多個map任務。主要的決定因素有 input的檔案總個數,input的檔案大小,集群設定的檔案塊大小 目前為128m,可在hive中通過set dfs.block.size 命令檢視到,該引數不能自定義修改 2....

Hive 設定map 和 reduce 的個數

一 控制hive任務中的map數 1.通常情況下,作業會通過input的目錄產生乙個或者多個map任務。主要的決定因素有 input的檔案總個數,input的檔案大小,集群設定的檔案塊大小 目前為128m,可在hive中通過set dfs.block.size 命令檢視到,該引數不能自定義修改 2....

Hive 設定map 和 reduce 的個數

hive 設定map 和 reduce 的個數 一 控制hive任務中的map數 通常情況下,作業會通過input的目錄產生乙個或者多個map任務。主要的決定因素有 input的檔案總個數,input的檔案大小,集群設定的檔案塊大小 目前為128m,可在hive中通過set dfs.block.si...