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
Hadoop之MapReduce自定義二次排序流程例項詳解
一、概述 MapReduce框架對處理結果的輸出會根據key值進行預設的排序,這個預設排序可以滿足一部分需求,但是也是十分有限的。在我們實際的需求當中,往往有要對reduce輸出結果進行二次排序的需求。對於二次排序的實現,網路上已經有很多人分享過了,但是對二次排序的實現的
Hadoop Mapreduce分割槽、分組、二次排序過程詳解
這篇文章分析的特別好,耐心看下去。。1、MapReduce中資料流動 (1)最簡單的過程: map - reduce (2)定製了partitioner以將map的結果送往指定reducer的過程: map - partition - reduce (3)增加了
hadoop中MapReduce的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,提供源代碼,說出