数据源(部分),完整数据见:http://blog.fens.me/rhadoop-demo-email/

wolys@21cn.com
zss1984@126.com
294522652@qq.com
simulateboy@163.com
zhoushigang_123@163.com
sirenxing424@126.com
lixinyu23@qq.com
chenlei1201@gmail.com
370433835@qq.com
cxx0409@126.com
viv093@sina.com
q62148830@163.com
65993266@qq.com
summeredison@sohu.com
zhangbao-autumn@163.com
diduo_007@yahoo.com.cn

采用Rhadoop统计每个邮箱域名出现的次数,这里将对程序作注释:

library(rhdfs)
library(rmr2)
data<-read.csv(file="mail.txt",sep='\t',header=F)
d0<-to.dfs(keyval(1, data))#keyval(key,val)创建键值对pair
#这里是key为1,value是data但是通过数据框强制转换时1被循环使用从而data的每个邮箱的key都是1即有41个<key,value>,
#to.dfs(kv)上传数据kv到hdfs
from.dfs(d0)#从hdfs读取数据
mr<-function(input=d0){map<-function(k,v){keyval(word(as.character(v$V1), 2, sep = fixed('@')),1)#word(string,start=1,end=start,sep="")字符串提取函数(包stringr中),string是原始字符串#start表示以sep分割的第start个串开始,end表示以sep分割的第end个串结束,#比如word("he#llo##world##c++",2,3,sep='##')返回world##c++,sep可以是个字符串(这点比boost库split都优秀啊)#这里将以邮箱域名为key,value=1的pair(注意map操作的语义)}reduce =function(k, v ) {keyval(k, sum(v))#reduce执行规约操作,对value求和}d1<-mapreduce(input=input,map=map,reduce=reduce,combine=TRUE)#mapreduce(input,output=NULL,map,reduce)//input是hdfs上的路径,#ouput为NULL时返回一个big.data.object(可以理解为一个hdfs上的临时文件可供其它函数使用),#map接收<key,value>形式的multi-pair执行map操作,返回NULL或者pair。#reduce接收multi-pair执行reduce操作,返回NULL或pair.
}
d1<-mr(d0)
from.dfs(d1)#从hdfs上获取结果#按域名出现次数进行排序
sort<-function(input=d1){map<-function(k,v){keyval(1,data.frame(k,v))#这里迫不得已将d1作为value而key全部为1,是为了经过map后d1数据是完整的}reduce<-function(k,v){v2<-v[order(as.integer(v$v),decreasing=TRUE),]#v$v中第一个v是d1,第二个v表示的d1的第二列即次数#order是用于排序函数返回下标,order返回向量的元素表示排序后该下标处的元素对应未排序向量的哪个位置keyval(1,v2)#排序后的结果在value中}d2<-mapreduce(input=input,map=map,reduce=reduce,combine=TRUE)
}
d2<-sort(d1)
result<-from.dfs(d2)
result$val#获取value即排序后的结果

结果(部分):

k  v
3      163.com 14
1       qq.com  9
2      126.com  9
5     sina.com  2

Rhadoop实战:统计邮箱域名出现次数相关推荐

  1. RHadoop实验 – 统计邮箱出现次数

    RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来替代Java的MapReduce实现.有了RHad ...

  2. python使用正则表达式统计字符串中出现次数最多的数字

    python使用正则表达式统计字符串中出现次数最多的数字 #python使用正则表达式统计字符串中出现次数最多的数字 # find the most occurring element import ...

  3. C#统计子字符串出现次数(转帖,http://www.it130.cn/)

    C#中没有统计子字符串出现次数的函数,那么如何在C#求出字符串中某字符的出现次数,比如求"ADSFGEHERGASDF"中"A"出现的次数.首先想到的方法当然是 ...

  4. Spark Streaming从Kafka中获取数据,并进行实时单词统计,统计URL出现的次数

    1.创建Maven项目 创建的过程参考:http://blog.csdn.net/tototuzuoquan/article/details/74571374 2.启动Kafka A:安装kafka集 ...

  5. JavaWeb程序设计任务教程(黑马程序员 传智播客)测一测 编写一个Servlet,实现统计网站被访问次数的功能

    详细解释已在注释中给出 package 统计网站被访问次数;import java.io.*;import javax.servlet.*; import javax.servlet.http.*;p ...

  6. oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数

    概述 很多时候我们都需要统计某个字符出现的次数,这里主要用translate来实现. Translate 的用法 1.语法: TRANSLATE(string,from_str,to_str) 返回将 ...

  7. 统计单词出现的次数并进行排

    统计 统计相同单词的次数 //使用map集合进行存储 String s="Day by Day"; Map<String,Integer> map=new HashMa ...

  8. JavaScript学习(七十七)—统计字符串中出现次数最多的字符和每个字符出现的次数

    JavaScript学习(七十七)-统计字符串中出现次数最多的字符和每个字符出现的次数

  9. 用 Zabbix 监控值统计每个月触发器告警次数

    场景模拟: 知名企业A公司的运维人员小智,想统计一下每个月发生的告警数量,于是他去查询数据库表alerts告警通知表,但是他发现界面上出现的一些问题(触发器生效),没有记录到alerts表中.因为只有 ...

最新文章

  1. Configure NFS Server On AIX 6.1
  2. 网上找到的一段关于SAP支持服务的QA (转)
  3. sql语句的一些参考
  4. SAP Cloud SDK for JavaScript 概述
  5. 提示以下的错误信息:“未能在设计视图中打开, 块中,以不同方式将值括起来 ”...
  6. 接口隔离原则(ISP)
  7. 架构的“一小步”,业务的一大步 1
  8. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_1_线程池的概念和原理...
  9. Shell子程序结构,函数
  10. 数据库课程设计——学生选课管理系统
  11. matlab画图实例_自定义函数
  12. 工业4.0,智能制造和大规模定制
  13. win7笔记本外接显示器html,win7系统笔记本怎样外接一个显示器
  14. 怎么克隆计算机的mac,选中克隆为当前电脑MAC地址
  15. TAPD 完整项目工作流
  16. 被遗忘的角落-CMMI的团队管理
  17. 写一个蛇型数组(蛇形填数)
  18. 其实,搭建一个有品质的棋牌游戏平台没那么复杂
  19. session到底是什么
  20. 车削加工出现振刀打刀现象,咋处理呢?

热门文章

  1. 萤火虫算法以及避障算法path planning in uncertain environment by using firefly algorithm(萤火虫算法在实际中的应用)
  2. java限制手机号码,更严格的手机号码正则表达式写法 --java
  3. 浏览器显示你的连接不是专用连接怎么解决?
  4. ASP木马提升权限的N种方法
  5. 单机模式运行hadoop,来自《Hadoop权威指南》
  6. 关于使用Restlet的升级
  7. SUMPRODUCT countif
  8. ISP(图像信号处理)算法概述、工作原理、架构、处理流程
  9. 台达DVP ES系列plc与3台台达MS300变频器通讯程序 实现频率设定,启停控制,实际频率读取等
  10. oracle 第一范式,数据库范式之第一范式