温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-08-12 16:45:59 来源:亿速云 阅读:144 作者:Leah 栏目:云计算

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

Python map/reduce

编写 map.py

#!/usr/bin/env python
import sys

def 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   1
world   1
Bye 1
world   1

编写 reduce.py

#!/usr/bin/env python
import sys

def 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.py
Bye 1
Hello   2
World   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 1
Goodbye 1
Hadoop  2
Hello   2
World   2

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI