六個案例強化MR程式的開發和理解之 資料排序

2021-09-25 12:41:02 字數 907 閱讀 7111

「 資料排序」是許多實際任務執行時要完成的第一項工作,比如學生成績評比、資料建立索引資料建立索引等。這個例項和資料去重類似,都是先對原始資料進行初步處理,為進一步的資料操作打好基礎。

1、問題描述

對輸入檔案中資料進行排序。輸入檔案中的每行內容均為乙個數字,即乙個資料。要求在輸出中每行有

兩個間隔的數字,其中

第乙個代表原始資料在原始資料集中的位次,第二個代表原始資料。

輸入檔案:

2、設計思路

該示例僅僅要求對輸入資料進行排序,如果熟悉 mapreduce 過程的話會很快想到在mapreduce過程中就有排序,是否可以利用這個預設的排序,而不需要自己再實現具體的排序呢?答案是肯定的。

但是在使用之前首先需要了解它的

預設排序規則。它是按照 key 值進行排序的,如果key 為封裝 int 的 intwritable 型別,那麼 mapreduce 按照 數字大小對 key 排序,如果 key 封裝為 string 的 text 型別,那麼 mapreduce 按照字典順序對字串排序。

了解了這個細節,我們就知道應該使用封裝 int 的 intwritable 型資料結構了。也就是在 map 中將讀入的資料轉化成 intwritable 型,然後作為 key 值輸出(value 任意) 。reduce 拿到之後,將輸入的 key 作為 value 輸出,並根據 value-list 中元素的個數決定輸出次數。輸出的 key(即**中的 linenum)是乙個全域性變數,它統計當前 key 的位次。需要注意的是這個程式中沒有配置 combiner,也就是在 mapreduce 過程中不使用 combiner。這主要是因為使用 map 和 reduce 就已經能夠完成任務了。

營銷自動化應用的六個案例研究

營銷自動化有可以提高營銷roi,提高客戶的生命週期價值,簡化產生銷售線索的過程,減少客戶需求響應時間,產生高質量的銷售線索等等。在這篇文章中,我們將會看到六個不同的企業,它們利用營銷自動化來給自己的利潤帶來巨大的提公升。我們將破解他們所面臨的問題,分析他們所採用的解決方案,以及獲得的令人驚嘆的結果。...

程式設計師的六個階段

可能很多人已經都看過了.第一階段 此階段主要是能熟練地使用某種語言。這就相當於練武中的套路和架式這些表面的東西。第二階段 此階段能精通基於某種平台的介面 例如我們現在常用的win 32的api函式 以及所對應語言的自身的庫函式。到達這個階段後,也就相當於可以進行真實散打對練了,可以真正地在實踐中做些...

程式設計師的六個準則

理想的程式設計師心眼兒不壞 他們從來都不是辦公室政治的寵兒,是一群單純明亮快樂的手藝人 有天真爛漫的好奇心 他們的眼睛裡經常閃著 哇,這個是怎麼做到的!永遠精益求精 他們的口頭禪是 我再研究一下 還樂於分享 他們活躍於github 各大問答社群和你的身邊,捨得將寶貴時間用於幫助新手 是的,他們不需要...