使用Python实现Map Reduce程序

起因

想处理一些较大的文件,单机运行效率太低,多线程也达不到要求,最终采用了集群的处理方式。

详细的讨论可以在v2ex上看一下。

步骤
  • MapReduce程序要分为两部分,即Map和Reduce部分,所以Python代码也是要分为两部分
  • 程序运行
hadoop jar contrib/streaming/hadoop-streaming-1.1.2.jar   
-mapper /usr/local/hadoop/mapper.py   
-reducer /usr/local/hadoop/reducer.py   
-input book/*   
-output book-output 
  • jar文件要在本机上找到,可以使用find命令搜索
  • input和output目录要在hdfs上
  • mapper和reducer代码放在本机即可
  • Map 和 Reduce间传递数据通过STDIN (标准输入)和STDOUT (标准输出)
程序实例
  • 可以写一个什么都不做的程序,即获得输入,然后输出
  • mapper.py如下
import sys

for line in sys.stdin:
    print line
  • reducer.py如下
import sys

for line in sys.stdin:
    print line
  • 赋予代码可运行权限 chmod即可
  • 然后运行即可在output位置查看输出
参考

相关文章:

  • 2021-10-31
  • 2021-10-29
  • 2022-02-03
  • 2021-04-08
  • 2021-11-02
  • 2021-05-26
  • 2021-05-20
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2018-07-25
  • 2021-09-24
  • 2018-04-25
  • 2021-10-13
  • 2021-05-17
相关资源
相似解决方案