• 理解MapReduce


    1. 用Python编写WordCount程序并提交任务

    程序

    WordCount

    输入

    一个包含大量单词的文本文件

    输出

    文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔

    1. 编写map函数,reduce函数
      #! /usr/bin/python3
      # Map函数
      import sys
      for line in sys.stdin:
           line=line.strip()
           words=line.split()
           for word in words:
                print ('%s	%s' % (word,1))
      #! /usr/bin/python3
      
      # Reduce函数
      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('	',1)
           try:
                count=int(count)
           except ValueError:
                continue
           if current_word==word:
                current_count+=count
           else:
                if current_word:
                    print ('%s	%s' % (current_word,current_count))
                current_count=count
                current_word=word
      if current_word==word:
           print ('%s	%s' % (current_word,current_count))
    2. 将其权限作出相应修改
      sudo chmod 777 mapper.py
      sudo chmod 777 reducter.py
    3. 本机上测试运行代码
      echo "Hello World, Bye World" | ./mapper.py
      
      echo "Hello World, Bye World" | ./mapper.py | sort -k1,1 | ./reducter.py
    4. 放到HDFS上运行
      1. 将之前爬取的文本文件上传到hdfs上
      2. 用Hadoop Streaming命令提交任务
    5. 查看运行结果

     

  • 相关阅读:
    合理的嵌入式开发学习路线
    Nginx
    RARP
    强弱电共地
    ACDC
    各电脑进Bios方法
    Java中Integer.parseInt
    全排列
    Java实现LRU缓存方案?
    缓存有关的几个问题
  • 原文地址:https://www.cnblogs.com/a305810827/p/9021872.html
Copyright © 2020-2023  润新知