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分组计算的更多相关文章

  1. spark 例子groupByKey分组计算2

    spark 例子groupByKey分组计算2 例子描述: 大概意思为,统计用户使用app的次数排名 原始数据: 000041b232,张三,FC:1A:11:5C:58:34,F8:E7:1E:1E ...

  2. [Spark][Python]groupByKey例子

    Spark Python 索引页 [Spark][Python]sortByKey 例子 的继续: [Spark][Python]groupByKey例子 In [29]: mydata003.col ...

  3. Spark 两种方法计算分组取Top N

    Spark 分组取Top N运算 大数据处理中,对数据分组后,取TopN是非常常见的运算. 下面我们以一个例子来展示spark如何进行分组取Top的运算. 1.RDD方法分组取TopN from py ...

  4. spark 例子wordcount topk

    spark 例子wordcount topk 例子描述: [单词计算wordcount ] [词频排序topk] 单词计算在代码方便很简单,基本大体就三个步骤 拆分字符串 以需要进行记数的单位为K,自 ...

  5. Spark源码剖析 - 计算引擎

    本章导读 RDD作为Spark对各种数据计算模型的统一抽象,被用于迭代计算过程以及任务输出结果的缓存读写.在所有MapReduce框架中,shuffle是连接map任务和reduce任务的桥梁.map ...

  6. spark 例子倒排索引

    spark 例子倒排索引 例子描述: [倒排索引(InvertedIndex)] 这个例子是在一本讲spark书中看到的,但是样例代码写的太java化,没有函数式编程风格,于是问了些高手,教我写了份函 ...

  7. spark 例子count(distinct 字段)

    spark 例子count(distinct 字段) 例子描述: 有个网站访问日志,有4个字段:(用户id,用户名,访问次数,访问网站) 需要统计: 1.用户的访问总次数去重 2.用户一共访问了多少种 ...

  8. demo2 Kafka+Spark Streaming+Redis实时计算整合实践 foreachRDD输出到redis

    基于Spark通用计算平台,可以很好地扩展各种计算类型的应用,尤其是Spark提供了内建的计算库支持,像Spark Streaming.Spark SQL.MLlib.GraphX,这些内建库都提供了 ...

  9. devexpress表格gridcontrol实现分组,并根据分组计算总计及平均值

    1.devexpress表格控件gridcontrol提供了强大的分组功能,你几乎不用写什么代码就可以实现一个分组功能,并且可根据分组计算总计和平均值.这里我例举了一个实现根据班级分组计算班级总人数, ...

随机推荐

  1. 沉淀,再出发:python爬虫的再次思考

    沉淀,再出发:python爬虫的再次思考 一.前言    之前笔者就写过python爬虫的相关文档,不过当时因为知识所限,理解和掌握的东西都非常的少,并且使用更多的是python2.x的版本的功能,现 ...

  2. July 31st 2017 Week 31st Monday

    Elegance is the only beauty that never fades. 优雅是唯一不会褪色的美. Even the most beautiful apperace would be ...

  3. iOS真机命令(自动化测试)

    获取设备的的UDID idevice_id --list # 显示当前所连接设备的 udid instruments -s devices # 列出所有设备,包括真机.模拟器.mac idevicei ...

  4. Entity Framework 指定架构无效 错误:1052

    IIS发布网站:如果不发布放到IIS没有问题,发布后IIS部署 打开网站却提示指定架构无效 1052 找到很多解决的问题 1添加wenconfig 2.更改entity名的 其实我认为最简单的就是先找 ...

  5. layui渲染form表单

    有时ajax请求的数据返回时,页面已经加载了,此时就无法展示ajax加载的内容,如果要局部刷新表单,则加上如下代码: layui.use('form', function() { var form = ...

  6. Dubbo特性

    dubbo.properties Dubbo 将自动加载 classpath 根目录下的dubbo.properties,可以通过JVM启动参数 -Ddubbo.properties.file=xxx ...

  7. UVA 12230 Crossing Rivers

    嘟嘟嘟 虽然分类是期望dp,不过好像是最水的 因为在陆地上的时间和概率是固定的,所以只用考虑过河的期望时间. 对于一条河p, l, v,p好像没什么用……不管了,首先期望时间我觉得可以这么算:期望时间 ...

  8. 《metasploit渗透测试魔鬼训练营》学习笔记第七章--社会工程学

    五.社工工程学     5.1社会工程系框架          5.1.1信息搜集                 maltego是一个高度自动化的信息搜集工具,集成在BT5中,如果国内网络环境使用时 ...

  9. [转]基于C#的开源GIS项目介绍之SharpMap篇

    我是一个刚毕业的GIS本科毕业生,目前在杭州从事GIS软件应用开发.在项目开发中总感觉自己的编程水平还不够,于是想找些开源GIS小项目来研究研究,借以提高自己的编程能力和项目开发能力.在网上搜了一下“ ...

  10. Redis(二)安全设置

    redis是一款流行的内存数据库,默认是无密码登录,若出于安全考虑,需要为其加上控制权限,则可以通过以下2种方法来设置. 1. 采用绑定IP的方式来进行控制(比较安全的方法) 在redis.conf( ...