【spark】示例:求极值
我们有这样的数据
1.建立SparkContext读取数据
(1)建立sc
(2)通过sc.textFile()读取数据创建Rdd
2.过滤数据
通过filter(line => line.trim.length>0)过滤掉无效数据
3.转换数据类型以及转换成键值对的形式
我们要把String类型的数据换成Int类型的,并且要转化成为("key",Int)类型的键值对
每条数据都有相同的Key,然后我们通过groupByKey()方法将所有的值收集到一个集合中。
有同学会问?我们用求Top的思想去求不也行吗?
当然是可以的,但是我们每次只能求一个值,不能同时求出最大值和最小值。
4.调用groupByKey()方法把所有数据收集到同一个集合中
5.遍历集合求最大值最小值
我们追个比较每个数据,要是比最大值大就替换,比最小值小替换。
遍历结束后,最大值最小值就得出来了。
val max = Integer.MAX_VALUE
val min = Integer.MIN_VALUE
for(num <- x._2){
if(num > max)
max = num
if(num < min)
min = num
}
完整代码
import org.apache.spark.{SparkConf, SparkContext} object MaxAndMin {
//建立SparkContext
val sparkConf = new SparkConf().setAppName("TopN")
val sc = new SparkContext(sparkConf)
//设置日志等级,只显示报错
sc.setLogLevel("ERROR")
//读取数据,分区
val lines = sc.textFile("hdfs://localhost:9000/user/local/spark/data",2)
var min = Integer.MAX_VALUE
var max = Integer.MIN_VALUE
var result = lines.filter(line => line.trim.length > 0 )//过滤数据
.map(x =>("key",x.toInt)) //修改数据类型并转化为键值对的形式
.groupByKey()//分组,因为每条数据都设置的相同的key,所以最终所有数据会分到一个集合中
.map( x => { //求最大值,最小值
for(num <- x._2){
if(num > max)
max = num
if(num < min)
min = num
}
(max,min)//返回值
})
.collect
.foreach( x =>{ //显示数据,
//注意之前匿名函数x=>(max,min),所以这里操作的是数据是(max,min)
println("max"+"\t"+x._1) //显示最大值
println("min"+"\t"+x._2) //显示最大值
})
}
【spark】示例:求极值的更多相关文章
- hihocoder-1142-三分求极值
Hihocoder-1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax ...
- 使用Scala编写Spark程序求基站下移动用户停留时长TopN
使用Scala编写Spark程序求基站下移动用户停留时长TopN 1. 需求:根据手机基站日志计算停留时长的TopN 我们的手机之所以能够实现移动通信,是因为在全国各地有许许多多的基站,只要手机一开机 ...
- HLJU 1221: 高考签到题 (三分求极值)
1221: 高考签到题 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 9 Solved: 4 [Submit][id=1221">St ...
- hihocoder 1142 三分求极值【三分算法 模板应用】
#1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...
- 通过spark rdd 求取 特征的稀疏向量
通过spark rdd 求取 特征的稀疏向量 spark 类标签的稀疏 特征向量 - bonelee - 博客园 http://www.cnblogs.com/bonelee/p/7814081.h ...
- Hihocoder #1142 : 三分·三分求极值
1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一个 ...
- AtCoder Beginner Contest 130 F Minimum Bounding Box 三分法求极值(WA)
题意:给n个点的起始坐标以及他们的行走方向,每一单位时间每个点往它的方向移动一单位.问最小能包围所有点的矩形. 解法:看到题目求极值,想了想好像可以用三分法求极值,虽然我也不能证明面积是个单峰函数. ...
- hihocoder 1142 三分·三分求极值(三分)
题目1 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点 ...
- 遗传算法的C语言实现(一):以非线性函数求极值为例
以前搞数学建模的时候,研究过(其实也不算是研究,只是大概了解)一些人工智能算法,比如前面已经说过的粒子群算法(PSO),还有著名的遗传算法(GA),模拟退火算法(SA),蚁群算法(ACA)等.当时懂得 ...
随机推荐
- rest_framework 认证与权限
一 认证 1.1先写个类(认证组件) from app01 import models from rest_framework import exceptions from rest_framewo ...
- (转)Android工程出现 java.lang.NoClassDefFoundError错误解决方法
在Eclipse中,导入Android工程,工程没有报错,运行时,出现 java.lang.NoClassDefFoundError类没有找到的错误.从问题上可以看出是导入包出错的原因.遂百度加谷歌. ...
- Python游戏引擎开发(五):Sprite精灵类和鼠标事件
本次来实现Sprite类和鼠标事件. 说起这个Sprite啊,涉及过2D游戏研究领域的看官应该都听说过它. 它中文原意是"精灵",只是在不同人的眼中,它所表示的意义不同. 比方说在 ...
- select * 为什么不好? limit 1 为什么好? --mysql SQL语句优化
问题一: Select * from student; 这种语句不好 我的理解:根据Innode存储引擎以及网上的各种资料所说的innodb的B+树索引结构可以分析出,当在非聚集索引列上搜索若用s ...
- mac截屏
shift+command+3 : 截全屏 shift+command+4 : 出现十字架的坐标图标,画框截图
- CSS 之怀疑自己的审美 1 (Day49)
CSS概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 一.css的四种引入方式 1.行内式 行内式是在标 ...
- beego——控制器函数
基于beego的Controller设计,只需要匿名组合beego.Controller就可以,如下所示: type xxxController struct { beego.Controller } ...
- service 需要注意的地方
@service标记的class,只能用于标记了@controller的类,用于其他的会出错 mybatis查询查询到返回记录,查询不到返回null
- iPhone获取手机里面所有的APP(私有库)+ 通过包名打开应用
1.获取到手机里面所有的APP包名 - (void)touss { Class lsawsc = objc_getClass("LSApplicationWorkspace"); ...
- js 性能优化 篇一
JS性能优化 摘自:http://www.china125.com/design/js/3631.htm 首先,由于JS是一种解释型语言,执行速度要比编译型语言慢得多.(注:,Chrome是第一款内 ...