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 上可用
随机推荐
- mysql substring_index()查询某个字符中以某个分割符分割后的值
substring_index(某个字段,以其分割,第几个分割点之前的值); +---------------------------------------------------------+ | ...
- SpringBoot非官方教程 | 第十九篇: 验证表单信息
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot19/ 本文出自方志朋的博客 这篇文篇主要简述如何 ...
- Mbatis错误信息整理
***每存在一对接口和xml文件,必须在xml文件中定义好mapper标签及namespace ***每对接口必须和xml文件名必须一致 <mapper>标签中的names ...
- 【HDOJ 1269】迷宫城堡(tarjan模板题)
Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若 ...
- Vmware+CentOs7+共享目录
首先下载VMware和CentOs7的镜像 安装VMware我是参考的https://www.cnblogs.com/wuyx/p/7246675.html,已经非常详细了 然后需要配置网络了 参考 ...
- IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/app
web.xml初始化spring容器出错 org.springframework.beans.factory.BeanDefinitionStoreException: IOException par ...
- eventlet详解
正真工作才发现很懒,没这么多时间写文,毕竟小白,参照大神写的,不喜勿喷 1.eventlet是什么eventlet - 具有WSGI支持的异步框架eventlet是python库函数,一个是处理和网络 ...
- ELK初学搭建
目录:基础准备 修改相关系统配置 安装elasticsearch 安装 kibana 安装logstash X-pack插件的安装 登录网页查看 ELK名字解释 ELK就是ElasticSearch ...
- yii 自带RBAC
common:中加 'authManager' => [ 'class' => 'yii\rbac\DbManager', 'itemTable' => 'auth_item', ' ...
- php 电商系统SKU库存设计
sku 全称为:Stock Keeping Unit,是库存进出计量的基本单元. 我们一般会在电商网站基本都会看到 比如淘宝,JD 淘宝和JD的 方式可能不一样,因为我不清楚他们具体是如何设计的, J ...