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

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

map.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 range(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(" ") 17 dick1[word[0]]=int((word[1].split("\t"[0]))[0]) 18 dick2=sorted(dick1.items(), key=lambda d:d[1], reverse = False) 19 for one in dick2: 20 print one

執行命令

bin/hadoop jar /home/hadoop/hadoop-2.6.5/share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar -file /home/hadoop/hadoop-2.6
.5/py/mapper.py -mapper /home/hadoop/hadoop-2.6.5/py/mapper.py -file /home/hadoop/hadoop-2.6.5/py/reducer.py -reducer /home/hadoop/hadoop-2.6.5/py/reducer.py -input usr/README.txt -output usr/out

說明及錯誤解釋

1,如過是win平臺上傳 .py檔案 ./無法執行,報沒有資料夾等問題,是此檔案的編碼有問題,在#!/usr/bin/env python後面的換行是有問題的,解決辦法是刪除了vim建立新的檔案
2,PipeMapRed.waitOutputThreads(): subprocess failed with code 1
你的程式碼有問題,執行錯誤
3,PipeMapRed.waitOutputThreads(): subprocess failed with code 2
你的檔案對於空格和tab,換行等符號有問題
4,PipeMapRed.waitOutputThreads(): subprocess failed with code 127
沒有找到可以執行的python直譯器,一般要新增#!/usr/bin/env python
使用#!/usr/bin/python 也是無法執行的,可能是hadoop是使用./執行程式吧
測試時一定要測試 ./ 是否可以執行
5,執行完之後失敗請 hadoop fs -rmr 你的檔案 將資料夾刪除
6,-output 後面是資料夾目錄
7,hadoop-streaming-2.6.5.jar 檔案在hadoop-2.6.5/share/hadoop/tools/lib
下,在使用bin/hadoop jar 命令時檔案以當前的位置為相對位置
如上命令可改為如下:

bin/hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar -file py/mapper.py -mapper py/mapper.py  -file py/reducer.py -reducer py/reducer.py  -input usr/README.txt -output usr/out

8,如果命令報找不到檔案,加 -file 檔案位置,無錯的話,命令可再簡化為:

bin/hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.6.5.jar -mapper py/mapper.py -reducer py/reducer.py  -input usr/README.txt -output usr/out

9,一定要檢查程式碼的正確性,map進行資料的清洗和處理,如果格式不清楚,多次reduce -print出格式,
hadoop job
這裡寫圖片描述
檢視輸出檔案內容
這裡寫圖片描述

相關推薦

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平臺使用python編寫mapreduce二次排序程式

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

Hadoop平臺中執行MapReduce WordCount程式

一、實驗名稱 在Hadoop平臺執行MapReduce程式 二、實驗過程 1.設定環境變數 (1)編輯~/.bashrc檔案,新增下列語句 export HADOOP_HOME=/usr/local/hadoop export CLASSPATH=.:$JAVA_HOME/

hadoop上進行編寫mapreduce程式,統計關鍵詞在text出現次數

mapreduce的處理過程分為2個階段,map階段,和reduce階段。在要求統計指定檔案中的所有單詞的出現次數時, map階段把每個關鍵詞寫到一行上以逗號進行分隔,並初始化數量為1(相同的單詞ha

python、微信程式及各種開發者課程視訊

這裡有海量程式開發視訊,從基礎入門到各技術語言進階,共計約1.5T,150元可以給到全部; python視訊從0開始學,從基礎班到就業班,以及Python AI的完整教程,包括基礎必備到高等數學,資料分析與挖掘,機器學習及自然語言處理;可以掃我微信二維碼加微信 廢話不多說,完整

Python編寫微信遊戲“跳一跳”的執行指令碼

前言 更新了微信後發現了一款小遊戲跳一跳,但是玩了一下午最高才達到200,每次差點破紀錄後總是手抖就掛掉了,氣的想要砸手機。。閒來無事刷微博的時候正好看到有人分析如何編寫指令碼自動運行遊戲破了3000多分,細看後覺得原理並不複雜,就索性花了一個晚上,參考大神的實現方法,在他的基礎上刪減了一

Python入門基礎---購物車程式

1.購物車小程式: 1.1使用者輸入工資取60% 1.2列印輸出商品選單 1.3由使用者輸入數字選擇 #__author:Mifen #date: 2018/11/27 # 購物車程式 #把工資作為賬戶的餘額 salary = int (input('你的工資為:')) funds = s

Python爬蟲2-翻譯程式

1、簡介 本次部落格分享的內容為基於有道線上翻譯實現一個實時翻譯小程式,本次任務是參考小甲魚的書《零基礎入門學習Python》完成的,書中程式碼對於當前的有道詞典並不適用,使用後無法實現翻譯功能,在網上進行學習之後解決了這一問題。 2、前置工作 1)由於有道線上翻譯是“反爬

python之外星人入侵程式

 相信你大家在學習程式語言的過程中經常會碰到一個問題,那就是學完了基本的語法以後不知道自己要做什麼。其實,先找一些簡單的專案進行練手是非常好的一種學習程式設計的方式。前段時間學習了python的基本語法,這裡給大家推薦一本適合新手學習的python教程,叫《python程式設

讓webstorm編寫微信程式時支援rpx

引言:微信小程式太噁心了,每次習慣性Ctrl+Alt+L就會炸掉,讓我各種不爽,但咱還是得寫不是,網上搜了半天發現一篇文章提供瞭解決方案。 在這篇文章裡面提供了思路,通過Webstorm中自帶的File Watcher工具監視檔案變化,自動替換所有的空格rpx為rp

完全Ubuntu16.04平臺編寫下載嵌入式S3C2440程式

完全Ubuntu16.04平臺下編寫下載嵌入式S3C2440程式 1.程式碼編寫 2.安裝交叉編譯工具鏈(僅第一次需要) 3.程式碼編譯 4.串列埠通訊助手Putty安裝(僅第一次需要) 5.串列埠傳輸助手DNW安裝(僅第一次需

java編寫控制檯五子棋程式

package com.lddx.game; import java.util.Scanner; //五子棋遊戲 /* * 做出棋盤,實現黑白雙方落子,實現黑白雙方重複落子的功能,實現黑白雙方勝利的功能 * */ public class wuziqi { /** * @para

Python實現微信程式支付功能

由於最近自己在做小程式的支付,就在這裡簡單介紹一下講一下用python做小程式支付這個流程。當然在進行開發之前還是建議讀一下具體的流程,清楚支付的過程。 1.支付互動流程  2.獲取openid(微信使用者標識) 1 import requests 2 3 from config import

python編寫一個屏保程式(背單詞)

大家好,我是一名即將畢業的大學生,第一次在CSDN上發表文章,之前在其他的部落格上也寫過,但是總的來說,這個平臺的資源要多一些(個人覺得),所以有很多不懂的地方希望大家多多指教。 今天我要給大家分享的是一款自己寫的屏保程式,大學嘛大家最頭疼的就是四六級的考試了,上次考試做閱讀的時候,情不

python打造微信程式,加帽神器祝你聖誕節快樂!

每年到這個時候,微信好友的頭像都會開始換上「聖誕」面板。最常見的就是加個聖誕小帽子了。     當然這種事情用很多 P 圖軟體都可以做到,微信搜尋「聖誕帽」也會有各種小程式出現,但是使用之前的驗證,總會要求繫結微信等各種資訊,接受各種彈幕廣告,甚至還有

Python 打造微信程式-加減大師輔助程式

寫在前面:      主要運用python進行簡單的影象處理,不得不說python用起來是真的爽,各種庫的學習使得開發變得越來越簡單...     其實玩過這個小程式的應該知道實現起來也不是很難,很適合新手練手。第一次到了500多題不知道是因為被檢測了還是網掉了分數沒提交。。

微信程式-----安裝,編寫第一個程式和執行到手機端

第一步: 填寫相關資訊,如:主體型別(個人或者企業)        AppID  在開發中都是用的到的,伺服器域名在網路請求也是用的到的。 完成資訊之後,下載開發工具;       選擇自己需要的版本,下載直接安裝,和平常的軟體安裝一樣,直接執行   用微信掃碼登入即可,然後點選新增專案,   輸入

Python 兩個圖形程式

程式1: 效果圖: 示例程式碼: print('\n'.join([' '.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 &

python+pyqt5+qt designer程式

相關配置: Anaconda 4.2.0 (64-bit) Python 3.5.2 qt designer設計介面如下: 轉換成py檔案後,csz.py程式如下: # -*- coding: utf-8 -*- # Form implementation ge

python寫的一些程式

1.python 處理字串 輸入:‘000810000004’, 輸出:‘00-08-10-00-00-04’ 方法一:用正則表示式 import re s= '000810000004' result = re.sub(r"(?<=\w)(?=(?:\w\w)+$)", "-",