1. 程式人生 > >用Python來寫MapReduce的實際應用程式

用Python來寫MapReduce的實際應用程式

用Python來寫分散式的程式。這樣速度快。便於除錯,更有實際意義。MapReduce適合於對文字檔案的處理及資料探勘用:

  在每臺機器上:
su - hadoop
wget http://www.python.org/ftp/python/3.0.1/Python-3.0.1.tar.bz2
tar jxvf Python-3.0.1.tar.bz2
cd Python-3.0.1
./configure --prefix=/home/hadoop/python;make;make install

vi /home/hadoop/mapper.py

#!/home/hadoop/python/bin/python3.0

import sys
for line in sys.stdin:
line = line.strip()
words = line.split()
for word in words:
print ("%st%s" % (word, 1))

vi /home/hadoop/reduce.py

#!/home/hadoop/python/bin/python3.0

from operator import itemgetter
import sys

word2count = {}

for line in sys.stdin:
line = line.strip()
word, count = line.split('t', 1)
try:
count = int(count)
word2count[word] = word2count.get(word, 0) + count
except ValueError:
pass

sorted_word2count = sorted(word2count.items(), key=itemgetter(0))

for word, count in sorted_word2count:
print ("%st%s" % (word, count))

  測測好不好用:
echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py
foo 1
foo 1
quux 1
labs 1
foo 1
bar 1
quux 1

echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py | sort | /home/hadoop/reduce.py
bar 1
foo 3
labs 1
quux 2

  在各個節點上都要準備好這兩個檔案啊!!!

  在master主節點上執行:

# 拷貝conf目錄到hdfs檔案系統中
$ cd /home/hadoop/hadoop-0.19.1
$ bin/hadoop dfs -copyFromLocal conf 111

  # 檢視一下是否已經拷過去了
$ bin/hadoop dfs -ls
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2009-05-18 15:27 /user/hadoop/111

  # 分佈計算
$ bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar -mapper /home/hadoop/mapper.py -reducer /home/hadoop/reduce.py -input 111/* -output 111-output
additionalConfSpec_:null
[email protected]@@userJobConfProps_.get(stream.shipped.hadoopstreaming
packageJobJar: [/tmp/hadoop-hadoop/hadoop-unjar29198/] [] /tmp/streamjob29199.jar tmpDir=null
[...] INFO mapred.FileInputFormat: Total input paths to process : 12
[...] INFO streaming.StreamJob: getLocalDirs(): [/tmp/hadoop-hadoop/mapred/local]
[...] INFO streaming.StreamJob: Running job: job_200905191453_0001
[...] INFO streaming.StreamJob: To kill this job, run:
...
[...]
[...] INFO streaming.StreamJob: map 0% reduce 0%
[...] INFO streaming.StreamJob: map 43% reduce 0%
[...] INFO streaming.StreamJob: map 86% reduce 0%
[...] INFO streaming.StreamJob: map 100% reduce 0%
[...] INFO streaming.StreamJob: map 100% reduce 33%
[...] INFO streaming.StreamJob: map 100% reduce 70%
[...] INFO streaming.StreamJob: map 100% reduce 77%
[...] INFO streaming.StreamJob: map 100% reduce 100%
[...] INFO streaming.StreamJob: Job complete: job_200905191453_0001
[...] INFO streaming.StreamJob: Output: 111-output [[email protected] hadoop-0.19.1]$

$ bin/hadoop dfs -ls 111-output
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2009-05-19 14:54 /user/hadoop/111-output/_logs
-rw-r--r-- 2 hadoop supergroup 30504 2009-05-19 16:26 /user/hadoop/111-output/part-00000

$ bin/hadoop dfs -cat 111-output/part-00000
you 3
you've 1
your 1
zero 3
zero, 1

Over,搞定。大家可以拓展這個例子,寫出自己的應用來。

相關推薦

PythonMapReduce實際應用程式

用Python來寫分散式的程式。這樣速度快。便於除錯,更有實際意義。MapReduce適合於對文字檔案的處理及資料探勘用:   在每臺機器上:su - hadoopwget http://www.python.org/ftp/python/3.0.1/Python-3.0.1

Python一個男女相親小程式|碼農的情人節

碼農這個群體,高學歷,高工資,高智商,但是不善於交流,圈子也很小,相信很多小夥伴或者周圍的小夥伴,都有相親的經歷,或者被父母逼去相親的經歷,一般都是問年齡,你要找什麼樣的,有的還特講究生肖匹配,記得網上有一個段子,說男的20-60歲都只喜歡一種型別的女孩,而20歲到60歲的女孩相親需求卻不斷

本想python個 好友發送給我指定的號,然後截屏發給好友,但是消息分割處理小毛病,還在測試

nbsp for wechat 全屏 名片 .text pict 參數 end from wxpy import * from PIL import ImageGrab import os img_path_name=‘1.jpg‘ def jiepin(img

P2P網路被谷歌共享離線安裝應用程式

考慮到部分發展中國家網路覆蓋差和流量資費昂貴問題,谷歌正在通過P2P 共享技術幫助使用者離線安裝應用。 通過區域網的P2P 共享使用者可以快速獲得應用程式的安裝包,這樣可以降低使用者下載時間和耗費的流量費用。 當然基於安全考慮只有具有有效數字簽名的應用才可以P2P 共享,並且谷歌也會通過聯網

開啟腦洞, 中文程式會怎樣, 中文程式設計初體驗

程式猿們都知道目前的各種程式語言指令都是英文單詞,有一天我突然想到一個問題:中文能用來編寫程式麼,這將會是一種怎樣的體驗呢?在這裡相信有許多想要學習前端的同學,關注小編文章最後面文字,可免費領取一整套系統的web前端學習教程!看了一下還真有,以下內容來自百度百科上世紀七十年代

震驚!!!python可以中文程式碼

python可以用中文來寫程式碼 說明: 偶爾間試了一下,python可以用中文來寫程式碼,除了一些python內建函式,和運算子不能用中文外,其它的比如新定義的類名、函式名、變數名,甚至是函式間傳的引數都可以用中文來代替。這是國人全民程式設計要來臨了嗎。下面是我用全中文編寫了的一個小程式

震驚!!!python可以中文代碼

一個 from 技術 韭菜 try 高新 世紀 代碼 pause python可以用中文來寫代碼 說明: 偶爾間試了一下,python可以用中文來寫代碼,除了一些python內置函數,和運算符不能用中文外,其它的比如新定義的類名、函數名、變量名,甚至是函數間傳的參數都可

Flask 個輕部落格 (23) — 應用 OAuth 實現 Facebook 第三方登入

目錄 前文列表 擴充套件閱讀 第三方登入流程 Resource Owner:資源所有者,本文中又稱”使用者”(user)。 Authorization server:認證伺服器,即服務提供商專門用來處理認證的伺服器。

Flask 個輕部落格 (17) — MV(C)_應用藍圖重構專案

目錄 前文列表 重構目錄結構 現在專案的目錄結構: (env) [[email protected] opt]# tree JmilkFan-s-Blog/

Flask 個輕部落格 (24) — 使用 Flask-Login 保護應用安全

目錄 前文列表 擴充套件閱讀 使用者登入帳號 Web上的使用者登入功能應該是最基本的功能了,但這個功能可能並沒有你所想像的那麼簡單,這是一個關係到使用者安全的功能. 在現代這樣速度的計算速度下,用窮舉法破解賬戶的密碼會是一件

python抓取“煎蛋網”上面的美女圖片,尺度很大哦!哈哈

each file like http add 寫入 header 。。 num 廢話不多說,先上代碼: import urllib.request import re #獲得當前頁面的頁數page_name def get_pagenum(url): req

python更改小夥伴的windows開機密碼,不給10塊不給開機

Python web 數據分析 爬蟲 編程 今天教大家用python腳本來控制小夥伴們windows電腦的開機密碼。沒錯就是神不知鬼不覺,用random()隨機生成的密碼,只有你自己知道哦~代碼呢分兩部分,一部分是client端跟server端兩個。你只需要想辦法讓小夥伴運行你的clien

python語言一個簡單的計算器

ali pla ket 列表 調用 語言 括號 lac 跳出循環 假如我們有這樣一個式子: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )思

PythonExcel文件的方式比較

註釋 作者 memory enc 地方 src 即使 嚴重 adf 雖然天天跟數據打交道,也頻繁地使用Excel進行一些簡單的數據處理和展示,但長期以來總是小心地避免用Python直接讀寫Excel文件。通常我都是把數據保存為以TAB分割的文本文件(TSV),再在Exc

吃貨們註意了!淘寶美食排行榜!Python分析什麽最好吃!

不同的 文章 end cap mongodb安裝 exc 比較 mongodb log 利用python3來爬取淘寶美食商品列表. 爬取流程: 搜索關鍵字: 用selenium打開瀏覽器,模擬輸入關鍵字,並搜索對應的商品列表.分析頁碼並翻頁,模擬翻頁,查看到所有頁面的商品列

python 獲取當前電腦及python的資訊

# coding:utf-8 # 運行當前指令碼來獲取當前電腦及python的配置資訊。 import sys, platform # 先看python。 a = sys.version_info print("當前python版本號是{a[0]}.{a[1]}.{a[2]}".format

中國新說唱熱門歌曲有哪些?今天我們就Python分析!

之前風靡朋友圈的“skr”流行語把中國新說唱這一節目帶上了熱議高峰,本文就來分析下,如何用Python爬取大受歡迎的說唱歌曲。 首先登入https://music.163.com/ 網易雲音樂搜尋新說唱,開啟Chrome的開發工具工具選擇Network並重新載入頁面,找到與評論資料相關的請求即n

position導航的下拉選單

今天來用position來寫下拉選單,話不多說,直接上程式碼, <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewpo

Python段瘋狂的抖音舞

農小王寫了一天的程式碼,水都沒有顧得上喝幾口!下班回家做地鐵的時候,總喜歡看一些休閒的東西,放鬆放鬆,看看新聞刷刷抖音,看看小姐姐的舞蹈,是一種不錯放鬆方式。 突然小王想既然我是一個程式設計師,為啥不用萬能的Python來寫一段魔性的抖音舞蹈呢,說幹就幹,查了資料發現Python還能真搞定,先來

python爬取中國天氣網北京,上海,成都8-15天的天氣

2 爬取北京,上海,成都的天氣            from bs4 import BeautifulSoup import random import requests import socket impo