spark 例子groupByKey分组计算
spark 例子groupByKey分组计算
例子描述:
【分组、计算】
主要为两部分,将同类的数据分组归纳到一起,并将分组后的数据进行简单数学计算。
难点在于怎么去理解groupBy和groupByKey
原始数据
2010-05-04 12:50,10,10,10
2010-05-05 13:50,20,20,20
2010-05-06 14:50,30,30,30
2010-05-05 13:50,20,20,20
2010-05-06 14:50,30,30,30
2010-05-04 12:50,10,10,10
2010-05-04 11:50,10,10,10
结果数据
2010-05-05 13:50,40,40,40
2010-05-04 12:50,20,20,20
2010-05-06 14:50,60,60,60
2010-05-04 11:50,10,10,10
代码片段:
/* 同类合并、计算 */
val source = Source.fromFile("E:test.txt").getLines.toArray
val sourceRDD = sc.parallelize(source) /* spark单机读取数据 */
sourceRDD
.map {
line =>
val lines = line.split(",") /* 拆分数据 */
(s"${lines(0)}", s"${lines(1)},${lines(2)},${lines(3)}") /* 找出同样的数据为K,需要进行计算的为V,拼成map */
}
.groupByKey
.map { /* 分组,最重要的就是这,同类的数据分组到一起,后面只需要计算V了 */
case (k, v) =>
var a, b, c = 0 /* 定义几个存数据的变量,恩,这很java,一般scala中很少见到var */
v.foreach { /* 遍历需要计算的V */
x =>
val r = x.split(",") /* 将V拆分 */
a += r(0).toInt /* 计算 */
b += r(1).toInt
c += r(2).toInt
}
s"$k,$a,$b,$c" /* 拼字符串,返回数据 */
}
.foreach(println)
spark 例子groupByKey分组计算的更多相关文章
- spark 例子groupByKey分组计算2
spark 例子groupByKey分组计算2 例子描述: 大概意思为,统计用户使用app的次数排名 原始数据: 000041b232,张三,FC:1A:11:5C:58:34,F8:E7:1E:1E ...
- [Spark][Python]groupByKey例子
Spark Python 索引页 [Spark][Python]sortByKey 例子 的继续: [Spark][Python]groupByKey例子 In [29]: mydata003.col ...
- Spark 两种方法计算分组取Top N
Spark 分组取Top N运算 大数据处理中,对数据分组后,取TopN是非常常见的运算. 下面我们以一个例子来展示spark如何进行分组取Top的运算. 1.RDD方法分组取TopN from py ...
- spark 例子wordcount topk
spark 例子wordcount topk 例子描述: [单词计算wordcount ] [词频排序topk] 单词计算在代码方便很简单,基本大体就三个步骤 拆分字符串 以需要进行记数的单位为K,自 ...
- Spark源码剖析 - 计算引擎
本章导读 RDD作为Spark对各种数据计算模型的统一抽象,被用于迭代计算过程以及任务输出结果的缓存读写.在所有MapReduce框架中,shuffle是连接map任务和reduce任务的桥梁.map ...
- spark 例子倒排索引
spark 例子倒排索引 例子描述: [倒排索引(InvertedIndex)] 这个例子是在一本讲spark书中看到的,但是样例代码写的太java化,没有函数式编程风格,于是问了些高手,教我写了份函 ...
- spark 例子count(distinct 字段)
spark 例子count(distinct 字段) 例子描述: 有个网站访问日志,有4个字段:(用户id,用户名,访问次数,访问网站) 需要统计: 1.用户的访问总次数去重 2.用户一共访问了多少种 ...
- demo2 Kafka+Spark Streaming+Redis实时计算整合实践 foreachRDD输出到redis
基于Spark通用计算平台,可以很好地扩展各种计算类型的应用,尤其是Spark提供了内建的计算库支持,像Spark Streaming.Spark SQL.MLlib.GraphX,这些内建库都提供了 ...
- devexpress表格gridcontrol实现分组,并根据分组计算总计及平均值
1.devexpress表格控件gridcontrol提供了强大的分组功能,你几乎不用写什么代码就可以实现一个分组功能,并且可根据分组计算总计和平均值.这里我例举了一个实现根据班级分组计算班级总人数, ...
随机推荐
- Eureka 集群高可用配置.
SERVER:1 server: port: 1111 eureka: instance: hostname: ${spring.cloud.client.ip-address} instance-i ...
- 查看oracle中表的索引
oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面, 其中, user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, ...
- Linux内存管理学习笔记——内存寻址
最近开始想稍微深入一点地学习Linux内核,主要参考内容是<深入理解Linux内核>和<深入理解Linux内核架构>以及源码,经验有限,只能分析出有限的内容,看完这遍以后再更深 ...
- Reading Meticulous Measurement of Control Packets in SDN
SOSR 17 概要 网络流量中有一部分是用于网络管理,(根据packet process survey,该部分流量属于包转发的slow path部分)由于sdn的数控分离,交换机需要向控制器发送大量 ...
- Node.js 上传图片并保存
Node.js 上传图片并保存 依赖 package.json 文件 { "name": "demo", "version": " ...
- spring,springMVC,mybatis项目添加maven后报500错
<resources> <resource> <directory>src/main/java</directory> <includes> ...
- 【Dubbo源码阅读系列】之远程服务调用(上)
今天打算来讲一讲 Dubbo 服务远程调用.笔者在开始看 Dubbo 远程服务相关源码的时候,看的有点迷糊.后来慢慢明白 Dubbo 远程服务的调用的本质就是动态代理模式的一种实现.本地消费者无须知道 ...
- Python 学习笔记(十五)Python类拓展(二)方法
方法 绑定方法和非绑定方法 绑定方法和非绑定方法在创建时没有任何区别,同一方法,既可以为绑定方法,也可以为非绑定方法,一切不同都只在调用时的手法上有所区别. 绑定方法即该方法绑定类的一个实例上,必须将 ...
- c/s和b/s结构的区别
c/s结构 1.创建Client 2.设计服务器Server 3.设计私有通讯协议 4.随着功能的升级,安装了客户端程序的计算,要不升级最新版 b/s结构 1.浏览器代替客户端 2.服务器(协议教会, ...
- Oracle 体系结构五
确定实例是否是RAC数据库的一部分:select parallel from v$instance; 确定数据库是否通过Data Guard备用数据库的保护来防止数据丢失:select protect ...