文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

用Python来写MapReduce的实

2023-01-31 02:25

关注

用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
null=@@@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 [hadoop@wangyin4 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,搞定。大家可以拓展这个例子,写出自己的应用来。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯