hadoop streaming 的兩種 key

參考:Hadoop Streaming 0.18 文檔

第一種 key,用來做 reducer 裏面的排序

 	-jobconf stream.map.output.field.separator=. \
    -jobconf stream.num.map.output.key.fields=4 \

第二種 key,用來將具有相同 key 的數據分配到同一個 reducer 裏面

    -jobconf num.key.fields.for.partition=2 \
    -jobconf mapred.reduce.tasks=12

理解

如果只使用第一種 key ,那麼,具有相同前兩個 key 的數據可能會被分到不同的 reducer。
如果只使用第二種 key ,那麼,在排序時就不能有效地對主鍵後面的部分進行排序。

這種高效的方法等價於指定前兩塊作爲主鍵,後兩塊作爲副鍵。 
主鍵用於切分塊,主鍵和副鍵的組合用於排序。一個簡單的示例如下:

Map的輸出(key)

11.12.1.2
11.14.2.3
11.11.4.1
11.12.1.1
11.14.2.2

切分給3個reducer(前兩塊的值用於切分)

11.11.4.1
-----------
11.12.1.2
11.12.1.1
-----------
11.14.2.3
11.14.2.2
在每個切分後的組內排序(四個塊的值都用於排序)

11.11.4.1
-----------
11.12.1.1
11.12.1.2
-----------
11.14.2.2
11.14.2.3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章