Python中的MapReduce以及在Hadoop环境下运行之词频统计
2021/5/10 22:33:07
本文主要是介绍Python中的MapReduce以及在Hadoop环境下运行之词频统计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、在Linux中运行
首先在Linux中新建下面的目录,里面什么也不要放,然后进入到目录 /opt/data/mapreduce_test/
1. 然后在里面创建一个test.txt文件,并往里面添加一些需要统计的单词,
2. 接着编辑mapper.py文件,vim mapper.py
#!/usr/bin/env python # encoding=utf-8 import sys for line in sys.stdin: line = line.strip() words = line.split() for word in words: print("%s\t%s" % (word, 1))
3. 接着新建reduce.py文件, vim reduce.py
#!/usr/bin/env python # encoding=utf-8 from operator import itemgetter import sys current_word = None current_count = 0 word = None for line in sys.stdin: line = line.strip() word, count = line.split('\t', 1) try: count = int(count) except ValueError: #count如果不是数字的话,直接忽略掉 continue if current_word == word: current_count += count else: if current_word: print("%s\t%s" % (current_word, current_count)) current_count = count current_word = word if word == current_word: #不要忘记最后的输出 print("%s\t%s" % (current_word, current_count))
4.分别对mapper.py和reduce.py 授权
[root@master mapreduce_test]# chmod -R 777 mapper.py [root@master mapreduce_test]# chmod -R 777 reduce.py [root@master mapreduce_test]# chmod -R 777 test.txt
5. 接下来开始运行mapper.py程序运行,
more test.txt | python ./mapper.py
排序运行
more test.txt | python ./mapper.py | sort
more test.txt | python ./mapper.py | sort -k1,1
6. mapper和reduce同时运行
more test.txt | python ./mapper.py | sort -k1,1 | ./reduce.py
二、在Hadoop环境中运行
还是在这个目录下,新建一个run.sh文件
里面的内容如下:
hadoop jar /opt/soft/hadoop-2.7.7/share/hadoop/tools/lib/hadoop-streaming-2.7.7.jar \ -file /opt/data/mapreduce_test/mapper.py -mapper /opt/data/mapreduce_test/mapper.py \ -file /opt/data/mapreduce_test/reduce.py -reducer /opt/data/mapreduce_test/reduce.py \ -input /tmp/py/input/* -output /tmp/py/output
第一行配置的是hadoop-streaming-2.7.5.jar所在的位置
然后给run.sh添加可执行权限
接着在hdfs环境下新建文件夹,
hdfs dfs -mkdir -p /tmp/py/input
然后把test.txt上传进去
hdfs dfs -put test.txt /tmp/py/input
接着运行run.sh
source run.sh
接着查看生成的文件
hdfs dfs -ls /tmp/py/output
其中part-00000就是运行结果,打开看一下
hdfs dfs -cat /tmp/py/output/part-00000
然后把运行结果保存到本地
hdfs dfs -get /tmp/py/output/part-00000 /opt/data
本文参考:Python中的MapReduce以及在Hadoop环境下运行_秦哥的博客-CSDN博客
这篇关于Python中的MapReduce以及在Hadoop环境下运行之词频统计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python