一、场景

现有某网站的网站日志,内容为用户对网站的请求,包含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的更多相关文章

  1. Spark基础脚本入门实践3:Pair RDD开发

    Pair RDD转化操作 val rdd = sc.parallelize(List((1,2),(3,4),(3,6))) //reduceByKey,通过key来做合并val r1 = rdd.r ...

  2. Spark学习之键值对(pair RDD)操作(3)

    Spark学习之键值对(pair RDD)操作(3) 1. 我们通常从一个RDD中提取某些字段(如代表事件时间.用户ID或者其他标识符的字段),并使用这些字段为pair RDD操作中的键. 2. 创建 ...

  3. Spark RDD概念学习系列之Pair RDD的分区控制

    不多说,直接上干货! Pair RDD的分区控制 Pair RDD的分区控制 (1) Spark 中所有的键值对RDD 都可以进行分区控制---自定义分区 (2)自定义分区的好处:  1) 避免数据倾 ...

  4. spark中的pair rdd,看这一篇就够了

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第四篇文章,我们一起来看下Pair RDD. 定义 在之前的文章当中,我们已经熟悉了RDD的相关概念,也了解了RDD基 ...

  5. Spark学习摘记 —— Pair RDD行动操作API归纳

    本文参考 参考<Spark快速大数据分析>动物书中的第四章"键值对操作",本篇是对RDD转化操作和行动操作API归纳的最后一篇 RDD转化操作API归纳:https:/ ...

  6. Spark学习摘记 —— Pair RDD转化操作API归纳

    本文参考 参考<Spark快速大数据分析>动物书中的第四章"键值对操作",由于pair RDD的一些特殊操作,没有和前面两篇的API归纳放在一起做示例 前面的几个api ...

  7. [Spark] Pair RDD常见转化操作

    本篇博客中的操作都在 ./bin/pyspark 中执行. 对单个 Pair RDD 的转化操作 下面会对 Pair RDD 的一些转化操作进行解释.先假设我们有下面这些RDD(在pyspark中操作 ...

  8. spark Pair RDD 基础操作

    下面是Pair RDD的API讲解 转化操作 reduceByKey:合并具有相同键的值: groupByKey:对具有相同键的值进行分组: keys:返回一个仅包含键值的RDD: values:返回 ...

  9. Spark RDD概念学习系列之Pair RDD的action操作

    不多说,直接上干货! Pair RDD的action操作 所有基础RDD 支持的行动操作也都在pair RDD 上可用

随机推荐

  1. mysql复制表数据,多表数据复制到一张表

    对于mysql 复制表数据可以使用 insert into select 方式 示例: $sql="insert into icarzoo.provider(providerId,provi ...

  2. HTML中id和class选择器

    <1>.id和class的区别? id相当于人的身份证不可以重复 class相当于人的名称可以重复 一个HTML标签只能绑定一个id名称 一个HTML标签可以绑定多个class名称 < ...

  3. POJ 2007--Scrambled Polygon(计算凸包,点集顺序)

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10094   Accepted: 476 ...

  4. Win10 VirtualBox虚拟机搭建lnmp环境

    之前用的是vagrant+VirtualBox搭建的环境,因为是windows系统动不动就报错,打不开环境,所以还是老老实实换了虚拟机哎.... 版本: VirtualBox 5.1.34   xsh ...

  5. 【ospf-基础配置】

    ospf开放最短路径优先基本配置{ ospf cost :配置ospf接口的优先级 ospf dr-priority :配置路径花费值 ospf router_id:创建ospf的进程号 area a ...

  6. Solr简单总结

    Solr 运行Solr服务 方式一:Jetty服务器启动Solr 进入solr-4.10.2/example目录 打开命令行,执行java –jar start.jar命令,即可启动Solr服务 打开 ...

  7. HTML5+ MUI实现ajax的一个demo

    index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  8. angularjs路由不断刷新当前页面

    最近做项目遇到个问题,使用angular-route的时候,第一次点击 [按钮 a]会进入按钮a对应的控制器,接着再次点击a按钮的的时候就不会进入控制器了.我想要的效果是每次点击都能进入control ...

  9. latex02-LaTeX源文件的基本结构

    1.一个latex文件有且仅有一个document环境 %后表示注释 2.latex的导言区用于全局设置. 例如:title\author\date 加入空行是结构更加清晰 为了能正确的使用标题信息, ...

  10. Kubernetes-apiserver

    Kubernetes API服务器为API对象验证和配置数据,这些对象包含Pod.Service.ReplicationController等等.API Server提供REST操作以及前端到集群的共 ...