千家信息网

Python 中怎么使用Hadoop实现统计功能

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,Python 中怎么使用Hadoop实现统计功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python map/reduce编写
千家信息网最后更新 2025年02月03日Python 中怎么使用Hadoop实现统计功能

Python 中怎么使用Hadoop实现统计功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Python map/reduce

编写 map.py

#!/usr/bin/env pythonimport sysdef read_inputs(file):    for line in file:    line = line.strip()    yield line.split()def main():    file = sys.stdin  lines = read_inputs(file)  for words in lines:    for word in words:      print("{}\t{}".format(word, 1))if __name__ == "__main__":    main()

测试

echo "Hello world Bye world" | ./map.py Hello   1world   1Bye 1world   1

编写 reduce.py

#!/usr/bin/env pythonimport sysdef read_map_outputs(file):    for line in file:    yield line.strip().split("\t", 1)def main():    current_word = None  word_count   = 0  lines = read_map_outputs(sys.stdin)  for word, count in lines:    try:      count = int(count)    except ValueError:      continue    if current_word == word:      word_count += count    else:      if current_word:        print("{}\t{}".format(current_word, word_count))      current_word = word      word_count = count  if current_word:    print("{}\t{}".format(current_word, word_count))if __name__ == "__main__":    main()

测试

echo "Hello World Bye World Hello" | ./map.py | sort | ./reduce.pyBye 1Hello   2World   2

上面都是使用 Python 自己的特性去进行统计,下面展示使用 Hadoop 的流程来执行

使用 MapReduce 执行 Python 脚本

查找 hadoop-stream 库的位置

find ./ -name "hadoop-streaming*.jar"  ./local/hadoop/share/hadoop/tools/sources/hadoop-streaming-2.7.3-test-sources.jar./local/hadoop/share/hadoop/tools/sources/hadoop-streaming-2.7.3-sources.jar./local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar

在 HDFS 上建立读入文件夹 input

hadoop -fs mkdir input

将待处理文件放入 HDFS

hadoop -fs put allfiles input

运行命令处理

hadoop jar ~/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar -input input -output output -mapper ./map.py -reducer ./reduce.py

处理后的文件

Bye 1Goodbye 1Hadoop  2Hello   2World   2

关于Python 中怎么使用Hadoop实现统计功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0