1. 程式人生 > >hadoop平臺使用python編寫mapreduce二次排序小程式

hadoop平臺使用python編寫mapreduce二次排序小程式

接上一個博文的環境
使用的是官網的專利使用資料,這裡只截取了一部分

3858241,956203
3858241,1324234
3858241,3398406
3858241,3557384
3858241,3634889
3858242,1515701
3858242,3319261
3858242,3668705
3858242,3707004
3858243,2949611
3858243,3146465
3858243,3156927
3858243,3221341
3858243,3574238
3858243,3681785
3858243,3684611
3858244,14040
3858244,17445

mapper.py

  1 #!/usr/bin/env python
  2 import sys
  3 list1=[]
  4 for line in sys.stdin:
  5     line=line.strip()
  6     words = line.split("\n")
  7     list1.append(words[0])
  8 for x in xrange(len(list1)):
  9     print list1[x]

reducer.py

1 #!/usr/bin/env python
  2 from operator import itemgetter
  3
import sys 4 dick1={} 5 for line in sys.stdin: 6 words = line.split("\n") 7 if words[0][0]=='\t': 8 continue 9 else: 10 11 word =words[0].split(",") 12 # print word[1] 13 # print "%s\t%s" % (word[0],word[1]) 14 if str(word[0]) in dick1: 15
dick1[word[0]].append(int((word[1].split("\t"[0]))[0])) 16 else: 17 dick1[word[0]]=[int((word[1].split("\t"[0]))[0])] 18 for one in dick1: 19 dick1[one].sort() #進行單個鍵內對多個值的排序 20 dick2=sorted(dick1.items(), key=lambda d:d[0], reverse = False) #進行鍵的排序 21 for one in dick2: 22 print one

輸出結果

[hadoop@mylab-client py]$ hadoop fs -cat out/part-00000
('3858241', [956203, 1324234, 3398406, 3557384, 3634889])   
('3858242', [1515701, 3319261, 3668705, 3707004])   
('3858243', [2949611, 3146465, 3156927, 3221341, 3574238, 3681785, 3684611])    
('3858244', [14040, 17445, 2211676])    
[hadoop@mylab-client py]$ 

再進行格式化輸出即可

相關推薦

hadoop平臺使用python編寫mapreduce排序程式

接上一個博文的環境 使用的是官網的專利使用資料,這裡只截取了一部分 3858241,956203 3858241,1324234 3858241,3398406 3858241,3557384 38

Hadoop MapReduce排序演算法與實現之演算法解析

MapReduce二次排序的原理     1.在Mapper階段,會通過inputFormat的getSplits來把資料集分割成split public abstract class Input

MapReduce排序

必須 .lib rec settime string == 技術分享 字段排序 protect 一、背景   按照年份升序排序,同時每一年中溫度降序排序   data文件為1949年-1955年每天的溫度數據。   要求:1、計算1949-1955年,每年溫度最高的時間  

關於MapReduce排序的一點解答

網上 hash 使用 table 為什麽 exti 而且 分區 ret 上一篇博客說明了怎麽自定義Key,而且用了二次排序的例子來做測試,但沒有詳細的說明二次排序,這一篇說詳細的說明二次排序,為了說明曾經一個思想的誤區,特地做了一個3個字段的二次排序來說明。後面稱其為“三次

大資料技術學習筆記之Hadoop框架基礎5-Hadoop高階特性HA及排序思想

一、回顧     -》shuffle流程         -》input:讀取mapreduce輸入的          &nbs

MapReduce排序原理和實現

/** * 自己定義的key類應該實現WritableComparable介面 */ public class IntPair implements WritableComparable<IntPair>{ int first;//第一個成員變數 int second;//第二個成員變數 p

Hadoop和Spark分別實現排序

將下列資料中每個分割槽中的第一列順序排列,第二列倒序排列。 Text  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 2021 5051

詳細講解MapReduce排序過程

我在15年處理大資料的時候還都是使用MapReduce, 隨著時間的推移, 計算工具的發展, 記憶體越來越便宜, 計算方式也有了極大的改變. 到現在再做大資料開發的好多同學都是直接使用spark, hive等工具, 很少有再寫MapReduce的了. 這裡整理一下MapReduce中經常用到的二次排序的方

微擎開發--程式之webview外鏈支付

說實話這個藉口就說就是不支援除小程式外的支付介面,雖然網上是有解決方法,但是在微擎這,腦子突然堵了,第一因為底層程式碼不熟,所以不知哪裡改哪裡,最後硬著頭皮試了下web-view進到自己公眾號應用裡面去,然後支付就出現這個東西 在出現這個東西 後來全域性找了下那個file//貌似是

Python Hadoop Mapreduce 實現Hadoop Streaming分組和排序

需求:公司給到一份全國各門店銷售資料,要求:1.按門店市場分類,將同一市場的門店放到一起;2.將各家門店按銷售額從大到小,再按利潤從大到小排列 一 需求一:按市場對門店進行分組 分組(partition) Hadoop streaming框架預設情況下會以’/t

hadoop平臺使用python編寫mapreduce排序程式

編寫環境 hadoop-2.6.5 python-2.7.5 xshell連線 金山雲平臺,一臺master,3臺selvet 資料型別 g 445 a 1117 b 222 c 333 d 444 e 123 f 345 h 456

Hadoop排序MapReduce處理流程例項詳解

一、概述 MapReduce框架對處理結果的輸出會根據key值進行預設的排序,這個預設排序可以滿足一部分需求,但是也是十分有限的,在我們實際的需求當中,往往有要對reduce輸出結果進行二次排序的需求。對於二次排序的實現,網路上已經有很多人分享過了,但是對二次排序的實現原理

Hadoop Mapreduce分割槽、分組、排序過程詳解[轉]

徐海蛟 教學用途 1、MapReduce中資料流動    (1)最簡單的過程:  map - reduce    (2)定製了partitioner以將map的結果送往指定reducer的過程: map - partition - reduce    (3)增加了在本地先進性一次reduce(優化)過程: 

Hadoop鏈式MapReduce、多維排序、倒排索引、自連線演算法、排序、Join效能優化、處理員工資訊Join實戰、URL流量分析、TopN及其排序、求平均值和最大最值、資料清洗ETL、分析氣

Hadoop Mapreduce 演算法彙總  第52課:Hadoop鏈式MapReduce程式設計實戰...1 第51課:Hadoop MapReduce多維排序解析與實戰...2 第50課:HadoopMapReduce倒排索引解析與實戰...3 第49課:Hado

Hadoop Mapreduce分割槽、分組、連線以及輔助排序(也叫排序)過程詳解

package com.hadoop; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import or

HadoopMapReduce自定義排序流程例項詳解

一、概述 MapReduce框架對處理結果的輸出會根據key值進行預設的排序,這個預設排序可以滿足一部分需求,但是也是十分有限的。在我們實際的需求當中,往往有要對reduce輸出結果進行二次排序的需求。對於二次排序的實現,網路上已經有很多人分享過了,但是對二次排序的實現的

Hadoop Mapreduce分割槽、分組、排序過程詳解

這篇文章分析的特別好,耐心看下去。。1、MapReduce中資料流動   (1)最簡單的過程:  map - reduce   (2)定製了partitioner以將map的結果送往指定reducer的過程: map - partition - reduce   (3)增加了

hadoopMapReduce的sort(部分排序,完全排序,排序)

1.部分排序 MapReduce預設就是在每個分割槽裡進行排序 2.完全排序 在所有的分割槽中,整體有序                 1)使用一個reduce             2)自定義分割槽函式 不同的key進入的到不同的分割槽之中,在每個分割槽中自動

MapReduce程序之排序與多排序

大數據 Hadoop MapReduce Java [toc] MapReduce程序之二次排序與多次排序 需求 有下面的數據: cookieId time url 2 12:12:34 2_hao123 3 09:10:34 3_baidu 1 15:0

mapreduce排序

大數據 hadoop 二次排序 mapreduce 一: 理解二次排序的功能, 使用自己理解的方式表達(包括自定義數據類型,分區,分組,排序) 二: 編寫實現二次排序功能, 提供源碼文件。 三:理解mapreduce join 的幾種 方式,編碼實現reduce join,提供源代碼,說出