一、场景

现有某网站的网站日志,内容为用户对网站的请求,包含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. Android中得到布局文件对象有三种方式

    Android中得到布局文件对象有三种方式 第一种,通过Activity对象 View view = Activity对象.getLayoutInflater().inflater(R.layout. ...

  2. webpack——安装报错及解决办法

    ①先删除 删除全局webpack-cli webpack4.x开始官方文档是说要安装cli所以如果的在用4.+就需要卸载cli npm uninstall -g webpack-cli # 注释给我这 ...

  3. docker官方文档翻译5

    转载请标明出处: https://blog.csdn.net/forezp/article/details/80244682 本文出自方志朋的博客 堆栈(Stacks) 准备工作 安装Docker 1 ...

  4. Java的内存--存储(1)

    有次去面试,面试官突然问我这个问题,当时我只知道怎么写最优化,但是具体不知道为什么那样写,身价立马下降哦 1. 以下开发习惯,你怎么看? for(int i=0;i<2;i++){ Person ...

  5. meclipse6.5破解

    package com.test.ssh.common;   import java.text.DecimalFormat; import java.text.NumberFormat; import ...

  6. 基于socketserver模块实现并发的套接字(tcp、udp)

    tcp服务端:import socketserver class MyHandler(socketserver.BaseRequestHandler): def handle(self): #通信循环 ...

  7. python__标准库 : urllib2

    urllib,urllib2 urllib库主要用 urlencode()把字典转换成url的get参数或者post参数 或者用 quote() 进行编码unquote进行解码 用urllib2.Pr ...

  8. WordPress博客插件程序:搜索下拉框openSug

    百度搜索框下拉提示Wordpress组插件. 下载地址:https://www.opensug.org/faq/wp-content/uploads/2018/12/opensug.wordpress ...

  9. laravel路由组+中间件

    在rotues中的web.php

  10. Hadoop(2)-CentOS下的jdk和hadoop的安装与配置

    准备工作 下载jdk8和hadoop2.7.2 使用sftp的方式传到hadoop100上的/opt/software目录中 配置环境 如果安装虚拟机时选择了open java,请先卸载 rpm -q ...