【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)等.当时懂得 ...
随机推荐
- Andrew Ng机器学习编程作业:Support Vector Machines
作业: machine-learning-ex6 1. 支持向量机(Support Vector Machines) 在这节,我们将使用支持向量机来处理二维数据.通过实验将会帮助我们获得一个直观感受S ...
- 简述ODS,和数据仓库做简单的比较
这两天看书,发现了和数据仓库相关的还有一个叫ODS的概念,它是企业级的全局数据库,用于提供集成的,企业级一致的数据,包含如何从各个子系统中向ODS抽取数据以及面向主题的角度存储数据. 它和数据仓库的主 ...
- JS获取当年当月最后一天日期
<html xmlns="http://www.w3.org/1999/xhtml" > <meta charset="UTF-8"> ...
- Shiro理解与总结
Feature Apache Shiro is a comprehensive application security framework with many features. The follo ...
- 与进程相关的命令ps、kill
一.概述 Ubuntu中主要有如下操作进程的命令 二.进程查看命令 ps 2.1 ps –l PPID:父进程的 PID PID:进程的PID S:进程状态,S:是指sleep睡眠状态:T:是挂起状态 ...
- Environment类包含的几个有用的方法
1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘 ...
- Spark机器学习7·降维模型(scala&python)
PCA(主成分分析法,Principal Components Analysis) SVD(奇异值分解法,Singular Value Decomposition) http://vis-www.cs ...
- Zabbix Linux http 监控脚本
说明:自定义监控脚本,监控内存是否启用主进程 创建文件:vim check_http.sh #!/bin/bash result=`ps -ef | grep httpd | grep -v grep ...
- 20145201《Java程序设计》第1次实验报告
实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145201命令建立实验目录,并使用dir命令查看目录建立情况. 运行结果如图 2.进入实验目录,输入mkdir ex ...
- spring security使用数据库验证的逻辑处理
前面做了多个示例,包括使用jdbc和hibernate两种方式访问数据库获取用户信息和权限信息,其中一些关键步骤如下: 我们在SecurityConfig中配置覆盖configure方法时候,可以 ...