RDD实例
实例一:
teacher.log
http://bigdata.baidu.cn/zhangsan
http://bigdata.baidu.cn/zhangsan
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/wangwu
http://bigdata.baidu.cn/wangwu
http://javaee.baidu.cn/xiaoxu
http://javaee.baidu.cn/xiaoxu
http://javaee.baidu.cn/laoyang
http://javaee.baidu.cn/laoyang
http://javaee.baidu.cn/laoyang
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/wangwu
http://bigdata.baidu.cn/wangwu
http://javaee.baidu.cn/xiaoxu
http://javaee.baidu.cn/xiaoxu
http://javaee.baidu.cn/laoyang
http://javaee.baidu.cn/laoyang
http://javaee.baidu.cn/laoyang
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/lisi
http://bigdata.baidu.cn/wangwu
http://bigdata.baidu.cn/wangwu
http://javaee.baidu.cn/xiaoxu
http://javaee.baidu.cn/xiaoxu
http://javaee.baidu.cn/laoyang
http://javaee.baidu.cn/laoyang
http://javaee.baidu.cn/laoyang
http://php.baidu.cn/laoli
http://php.baidu.cn/laoliu
http://php.baidu.cn/laoli
http://php.baidu.cn/laoli
全局topn 组内topn
代码:
package dayo1 import java.net.URL import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object teacher2 {
def main(args: Array[String]): Unit = {
val conf = new SparkConf ()
.setAppName ( this.getClass.getSimpleName )
.setMaster ( "local[1]" ) val sc = new SparkContext ( conf ) val lines = sc.textFile ( "E:\\teacher.log" ) val overAll: RDD[((String, String), Int)] = lines.map ( tp => {
val teacher: String = tp.split ( "/" ).last
val host = new URL ( tp ).getHost
val subject = host.substring ( , host.indexOf ( "." ) )
((teacher, subject), )
} )
//所有科目和老师的前三
val topOverAll = overAll.reduceByKey ( _ + _ ).sortBy ( -_._2 ).take ( ).foreach ( println ) //每个科目前两名的老师
val topGroup = overAll.reduceByKey ( _ + _ ).groupBy ( _._1._2 ).mapValues ( _.toList.sortBy ( -_._2 ).take ( ) ).foreach ( println )
sc.stop () }
}
实例二:
去重
file1:
-- a
-- b
-- c
-- d
-- a
-- b
-- c
-- c file2:
-- b
-- a
-- b
-- d
-- a
-- c
-- d
-- c
代码:
package dayo1
import org.apache.spark.{SparkConf, SparkContext}
object distinct {
def main(args: Array[String]): Unit = {
val cof = new SparkConf ()
.setAppName ( this.getClass.getSimpleName )
.setMaster ( "local[1]" )
val sc = new SparkContext ( cof )
val file1 = sc.textFile ( "E:\\file1.txt" )
val file2 = sc.textFile ( "E:\\file2.txt" )
val list = file1.union ( file2 ).distinct ().sortBy ( tp => tp )
list.foreach ( println )
sc.stop ()
}
}
实例三:
temperature.txt
0067011990999991950051507004888888889999999N9++
0067011990999991950051512004888888889999999N9++
0067011990999991950051518004888888889999999N9-+
0067011990999991949032412004888888889999999N9++
0067011990999991950032418004888888880500001N9++
0067011990999991950051507004888888880500001N9++
需求:分析每年的最高温度
代码:
package dayo1
import org.apache.spark.{SparkConf, SparkContext}
/**
* 0067011990999991950051507004888888889999999N9+00001+9999999999999999999999
* 0067011990999991950051512004888888889999999N9+00221+9999999999999999999999
* 0067011990999991950051518004888888889999999N9-00111+9999999999999999999999
* 0067011990999991949032412004888888889999999N9+01111+9999999999999999999999
* 0067011990999991950032418004888888880500001N9+00001+9999999999999999999999
* 0067011990999991950051507004888888880500001N9+00781+9999999999999999999999
*
* 12345678911234567892123456789312345678941234567895123456789612345678971234
* 需求:分析每年的最高温度
* 数据说明:
*
*
* 第15-19个字符是year 6-9
*
* 第45-50位是温度表示,+表示零上 -表示零下,且温度的值不能是9999,9999表示异常数据
*
* 第50位值只能是0、1、4、5、9几个数字
*/
object temperature {
def main(args: Array[String]): Unit = {
val cof = new SparkConf ()
.setAppName ( this.getClass.getSimpleName )
.setMaster ( "local[*]" )
val sc = new SparkContext ( cof )
val lines = sc.textFile ( "E:\\temperature.txt" )
val yearAndTemp = lines.filter ( tp => {
var temp =
val query = tp.charAt ( ).toString //val query=tp.subString(50,51)
if (tp.charAt ( ).equals ( "+" )) {
temp = tp.substring ( , ).toInt
} else {
temp = tp.substring ( , ).toInt
}
temp != && query.matches ( "[01459]" )
} ).map ( tp => {
val year = tp.substring ( , )
var temp =
if (tp.charAt ( ).equals ( "+" )) {
temp = tp.substring ( , ).toInt
} else {
temp = tp.substring ( , ).toInt
}
(year, temp)
} )
val res = yearAndTemp.reduceByKey ( (x, y) => if (x > y) x else y )
res.foreach ( tp => println ( "year:" + tp._1 + " temp:" + tp._2 ) )
sc.stop ()
}
}
RDD实例的更多相关文章
- Spark RDD编程核心
一句话说,在Spark中对数据的操作其实就是对RDD的操作,而对RDD的操作不外乎创建.转换.调用求值. 什么是RDD RDD(Resilient Distributed Dataset),弹性分布式 ...
- Spark RDD 操作
1. Spark RDD 创建操作 1.1 数据集合 parallelize 可以创建一个能够并行操作的RDD.其函数定义如下: ) scala> sc.defaultParallelism ...
- spark streaming之三 rdd,job的动态生成以及动态调度
前面一篇讲到了,DAG静态模板的生成.那么spark streaming会在每一个batch时间一到,就会根据DAG所形成的逻辑以及物理依赖链(dependencies)动态生成RDD以及由这些RDD ...
- spark 源码分析之一 -- RDD的四种依赖关系
RDD的四种依赖关系 RDD四种依赖关系,分别是 ShuffleDependency.PrunDependency.RangeDependency和OneToOneDependency四种依赖关系.如 ...
- Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...
- Spark Streaming揭秘 Day15 No Receivers方式思考
Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Recei ...
- spark 启动job的流程分析
从WordCount開始分析 编写一个样例程序 编写一个从HDFS中读取并计算wordcount的样例程序: packageorg.apache.spark.examples importorg.ap ...
- 《图解Spark:核心技术与案例实战》作者经验谈
1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...
- SparkStreaming流处理
一.Spark Streaming的介绍 1. 流处理 流式处理(Stream Processing).流式处理就是指源源不断的数据流过系统时,系统能够不停地连续计算.所以流式处理没有什么 ...
随机推荐
- 第七章 路由 82 名称案例-使用keyup事件实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Hadoop-No.13之数据源系统以及数据结构
文件系统中采集数据时,应该考虑以下内容. 数据源系统设备的读取速率 在所有处理流水线中,磁盘I/O通常都是主要瓶颈.但是优化采集流程时通常要看一下检索数据的系统系统.一般来说,Hadoop的读取速度在 ...
- [Spring boot] CommandLineRunner and Autowired
Previously we use Application Context to get Bean and Dependenies injection. It is actually easier t ...
- Prism框架的Regions使用
Prism框架的Regions,可以把用户控件.窗体等附加到主窗体指定的控件中. [实战1] 1.新建Prism Blank App(WPF) 项目:Demo0810 Views文件夹处,鼠标右键—— ...
- xml配置文件 操作
public class ConfigFile { protected readonly string configBasePath = "Root/Config"; /// &l ...
- c++几个通用工具
Pairs(对组) 1.class pair可以将两个值视为一个单元,C++标准程序库内多处使用这个class.尤其容器类别map和multimap,就是使用pairs来管理其键值/实值(key/va ...
- NOI2007 项链工厂
题目链接:戳我 60pts 有一点容易写错的小细节: 比如说求全局的段数的时候,如果只有一种颜色,那么当左右端点相等时,就不要ans--了. 注意右端点小于左端点的情况. #include<io ...
- python创建文件夹方法
def mkdir(path): # 引入模块 import os # 去除首位空格 path = path.strip() # 去除尾部 \ 符号 path = path.rstrip(" ...
- 3.Linux系统文件名字体不同的颜色都代表什么
在Linux中,文件的颜色都是有含义的.其中, Linux中文件名颜色不同,代表文件类型不一样.如下所示: 白色:表示普通文件浅蓝色:表示链接文件: 灰色:表示其他文件: 绿色:表示可执行文件: 红色 ...
- js一维数组转换为二维数组
function arrTrans(num, arr) { // 一维数组转换为二维数组 const iconsArr = []; // 声明数组 arr.forEach((item, index) ...