Spark实战练习03--Pair RDD
一、场景
现有某网站的网站日志,内容为用户对网站的请求,包含user ID、IP address、datetime……等等
另有一份文件中包含用户的账户详细信息数据,包含User ID、creation date、first 、last name等等
二、任务
1、统计每位用户的请求次数
// 1、从文件创建一个RDD,每行为一个元素,*读取目录下所有文件
val mydata=sc.textFile("hdfs:/loudacre/weblogs/*")
// 2、分组数据
val mydata1=mydata.map(line => line.split(" "))
// 3、构造K-V,Pair RDD
val mydata2=mydata1.map(line =>(line(2),1))
// 4、统计用户的请求次数
val mydata3=mydata2.reduceByKey((v1,v2)=> v1 + v2)
2、统计相同请求次数的用户
// 1、转置,将次数与用户id互换位置,方便使用countByKey得到一个map结构
val mydata4=mydata3.map(line=>(line._2,line._1))
// 2、计算相同请求次数的用户
val myresult1=mydata4.countByKey()
3、统计用户访问的IP地址
// 1、构建用户:IP Pair RDD
val mydata5=mydata1.map(line =>(line(2),line(0)))
// 2、统计用户访问的IP地址
val myresult2=mydata5.groupByKey()
4、关联两个文件,得到用户的访问次数
RDD格式:
userid1 6 Rick Hopper
userid2 8 Lucio Arnold
userid3 2 Brittany Parrott
// 1、引入数据,创建一个RDD,每行为一个元素
val mydata6=sc.textFile("hdfs:/loudacre/accounts/*")
// 2、分组数据,得到数组
val mydata7=mydata6.map(line=>line.split(","))
// 3、构建结构
val mydata8=mydata7.map(line=>(line(0),line))
// 4、连接数据
val myresult3=mydata8.join(mydata3)
// 5、格式化输出
for( line <- myresult3.take(10)){
printf("%s %s %s %s\n",line._1,line._2._2,line._2._1(3),line._2._1(4))}
Spark实战练习03--Pair RDD的更多相关文章
- Spark基础脚本入门实践3:Pair RDD开发
Pair RDD转化操作 val rdd = sc.parallelize(List((1,2),(3,4),(3,6))) //reduceByKey,通过key来做合并val r1 = rdd.r ...
- Spark学习之键值对(pair RDD)操作(3)
Spark学习之键值对(pair RDD)操作(3) 1. 我们通常从一个RDD中提取某些字段(如代表事件时间.用户ID或者其他标识符的字段),并使用这些字段为pair RDD操作中的键. 2. 创建 ...
- Spark RDD概念学习系列之Pair RDD的分区控制
不多说,直接上干货! Pair RDD的分区控制 Pair RDD的分区控制 (1) Spark 中所有的键值对RDD 都可以进行分区控制---自定义分区 (2)自定义分区的好处: 1) 避免数据倾 ...
- spark中的pair rdd,看这一篇就够了
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第四篇文章,我们一起来看下Pair RDD. 定义 在之前的文章当中,我们已经熟悉了RDD的相关概念,也了解了RDD基 ...
- Spark学习摘记 —— Pair RDD行动操作API归纳
本文参考 参考<Spark快速大数据分析>动物书中的第四章"键值对操作",本篇是对RDD转化操作和行动操作API归纳的最后一篇 RDD转化操作API归纳:https:/ ...
- Spark学习摘记 —— Pair RDD转化操作API归纳
本文参考 参考<Spark快速大数据分析>动物书中的第四章"键值对操作",由于pair RDD的一些特殊操作,没有和前面两篇的API归纳放在一起做示例 前面的几个api ...
- [Spark] Pair RDD常见转化操作
本篇博客中的操作都在 ./bin/pyspark 中执行. 对单个 Pair RDD 的转化操作 下面会对 Pair RDD 的一些转化操作进行解释.先假设我们有下面这些RDD(在pyspark中操作 ...
- spark Pair RDD 基础操作
下面是Pair RDD的API讲解 转化操作 reduceByKey:合并具有相同键的值: groupByKey:对具有相同键的值进行分组: keys:返回一个仅包含键值的RDD: values:返回 ...
- Spark RDD概念学习系列之Pair RDD的action操作
不多说,直接上干货! Pair RDD的action操作 所有基础RDD 支持的行动操作也都在pair RDD 上可用
随机推荐
- UGUI富文本
<b>text</b> --粗体 <i>text<i> --斜体 <size=10>text</size> --自 ...
- Java基础——XML复习
XML SGML : 标准通用置标语言 Standard Generailzed Markup Language XML ...
- getElementsByName和getElementById
1: 今天分享工作中遇到的一个小细节 1.1 先介绍一下两个方法分别是: 1.2 getElementById() :可返回对拥有指定 ID 的第一个对象的引用,如果您需要查找文档中的一个特定的元素 ...
- jquery mobile 移动web(2)
button 按钮 data-role="button" 将超链接变成button. 具有icon 图标的button 组件. 提供了18常用的图标 data-icon =&quo ...
- git 上传到码云
创建分支 在码云里创建好分支 命令行进入项目所在的目录 显示码云上的分支 git pull 选择将要编辑的分支(index-fenzhi) git checkout index-fenzhi 查看分支 ...
- 【c学习-9】
/*内存练习*/ #include #include//引入内存分配库文件 int main(){ double* x; //定义整型指针和double指针 int* y; x=(double*)ma ...
- web前端总结面试问题(理论)
一个页面从输入url到页面显示加载完成,这个过程发生了什么? 1.浏览器根据请求的URL交给DNS域名解析,找到真实的IP,向服务器发起请求. 2.服务器交给后台处理完成后返回数据,浏览器接收文件(h ...
- mysql 优化like查询
1. like %keyword 索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描. 2. like keyword% 索引有 ...
- CSS 转载
CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 ...
- Python的jieba模块简介
现如今,词云技术遍地都是,分词模块除了jieba也有很多,主要介绍一下jieba的基本使用 import jieba import jieba.posseg as psg from os import ...