博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解MapReduce
阅读量:5142 次
发布时间:2019-06-13

本文共 2492 字,大约阅读时间需要 8 分钟。

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

程序

WordCount

输入

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

输出

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

  1. 编写map函数,reduce函数
    cd /home/hadoop/txtsudo gedit mapper.pyimport sysfor danci in sys.stdin:     danci=danci.strip()     words=danci.split()     for word in words:          print '%s\t%s' % (word,1)from operator import itemgetterimport syscurrent_word=Nonecurrent_count=0word=Nonefor danci in sys.stdin:     danci=danci.strip()     word,count=danci.split('\t',1)     try:          count=int(count)     except ValueError:          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=wordif current_word==word:     print '%s\t%s' % (current_word,current_count)

      

  2. 将其权限作出相应修改
    chmod a+x /home/hadoop/mapper.py
    chmod a+x /home/hadoop/wc/reducer.py

      

  3. 本机上测试运行代码

     

     
  4. 放到HDFS上运行
    1. 将之前爬取的文本文件上传到hdfs上
    2. 用Hadoop Streaming命令提交任务

      echo "foo foo quux labs foo bar quux" | /home/hadoop/hp/mapper.py

      echo "foo foo quux labs foo bar quux" | /home/hadoop/hp/mapper.py | sort -k1,1 | /home/hadoop/hp/reducer.p

        

  5. 查看运行结果

 

 

2. 用mapreduce 处理气象数据集

编写程序求每日最高最低气温,区间最高最低气温

  1. 气象数据集下载地址为:
  2. 按学号后三位下载不同年份月份的数据(例如201506110136号同学,就下载2013年以6开头的数据,看具体数据情况稍有变通)
  3. 解压数据集,并保存在文本文件中
  4. 对气象数据格式进行解析
  5. 编写map函数,reduce函数
  6. 将其权限作出相应修改
  7. 本机上测试运行代码
  8. 放到HDFS上运行
    1. 将之前爬取的文本文件上传到hdfs上
    2. 用Hadoop Streaming命令提交任务
  9. 查看运行结果
    cd /usr/hadoopsodu mkdir hpcd /usr/hadoop/hp wget -D --accept-regex=REGEX -P data -r -c ftp://ftp.ncdc.noaa.gov/pub/data/noaa/2013/4* cd /usr/hadoop/hp/data/ftp.ncdc.noaa.gov/pub/data/noaa/2014sudo zcat 1*.gz >hptext.txtcd /usr/hadoop/hp  import sysfor line in sys.stdin:     line = line.strip()     dtext = line[15:23]     text = line[87:92]      print '%s\t%s' % (d,t)  from operator import itemggetterimport sys current_word = Nonecurrent_count = 0word = None for line in sys.stdin:     line = line.strip()     word,count = line.split('\t', 1)     try:          count = int(count)     except ValueError:          continue      if current_word == word:         if current_count > count:              current_count = count     else:         if current_word:             print '%s\t%s' % (current_word, current_count)         current_count = count         current_word = word if current_word == word:     print '%s\t%s' % (current_word, current_count) chmod a+x /usr/hadoop/hp/mapper.pychmod a+x /usr/hadoop/hp/reducer.py

      

转载于:https://www.cnblogs.com/a13798508446/p/9020935.html

你可能感兴趣的文章
shim和polyfill有什么区别
查看>>
Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll
查看>>
Zabbix3.4服务器的搭建--CentOS7
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
夜太美---酒不醉--人自醉
查看>>
Java学习 · 初识 面向对象深入一
查看>>
zabbix经常报警elasticsearch节点TCP连接数过高问题
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>
多线程学习笔记三之ReentrantLock与AQS实现分析
查看>>
【转】进程与线程的一个简单解释
查看>>
getopt,getoptlong学习
查看>>
数据的传递 变量与参数的使用
查看>>
Razor项目所感(上)
查看>>
移动互联网服务客户端开发技巧系列
查看>>
《Spring》(十五)---@AspectJ
查看>>
使用visio 2010建立sql server数据模型——手动画、利用逆向工程
查看>>
篮球赛
查看>>
HihoCoder - 1339 Dice Possibility(概率dp)
查看>>