实例一:

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实例的更多相关文章

  1. Spark RDD编程核心

    一句话说,在Spark中对数据的操作其实就是对RDD的操作,而对RDD的操作不外乎创建.转换.调用求值. 什么是RDD RDD(Resilient Distributed Dataset),弹性分布式 ...

  2. Spark RDD 操作

    1. Spark RDD 创建操作 1.1 数据集合   parallelize 可以创建一个能够并行操作的RDD.其函数定义如下: ) scala> sc.defaultParallelism ...

  3. spark streaming之三 rdd,job的动态生成以及动态调度

    前面一篇讲到了,DAG静态模板的生成.那么spark streaming会在每一个batch时间一到,就会根据DAG所形成的逻辑以及物理依赖链(dependencies)动态生成RDD以及由这些RDD ...

  4. spark 源码分析之一 -- RDD的四种依赖关系

    RDD的四种依赖关系 RDD四种依赖关系,分别是 ShuffleDependency.PrunDependency.RangeDependency和OneToOneDependency四种依赖关系.如 ...

  5. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  6. Spark Streaming揭秘 Day15 No Receivers方式思考

    Spark Streaming揭秘 Day15 No Receivers方式思考 在前面也有比较多的篇幅介绍了Receiver在SparkStreaming中的应用,但是我们也会发现,传统的Recei ...

  7. spark 启动job的流程分析

    从WordCount開始分析 编写一个样例程序 编写一个从HDFS中读取并计算wordcount的样例程序: packageorg.apache.spark.examples importorg.ap ...

  8. 《图解Spark:核心技术与案例实战》作者经验谈

    1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...

  9. SparkStreaming流处理

    一.Spark Streaming的介绍 1.       流处理 流式处理(Stream Processing).流式处理就是指源源不断的数据流过系统时,系统能够不停地连续计算.所以流式处理没有什么 ...

随机推荐

  1. 搭建私有CA

    一.实验目的 搭建私有CA并使其可以实现公司内部的的签名服务. 二.实验环境: 系统架构:Centos7(服务器).Centos6(需要申请证书的服务器)需要的软件包:openssl.openssl- ...

  2. SpringBoot中注入RedisTemplate实例异常解决(转)

    最近,在项目开发过程中使用了RedisTemplate,进行单元测试时提示“Field redisTemplate in com.example.demo1.dao.RedisDao required ...

  3. C#双缓冲解释

    C#双缓冲解释 简单说就是当我们在进行画图操作时,系统并不是直接把内容呈现到屏幕 C#双缓冲 上,而是先在内存中保存,然后一次性把结果输出来,如果没用双缓冲的话,你会发现在画图过程中屏幕会闪的很厉害, ...

  4. js比较两个时间的大小

    function checkdate(s,e){ //得到日期值并转化成日期格式,replace(/-/g, "//")是根据验证表达式把日期转化成长日期格式,这样再进行判断就好判 ...

  5. 简单的c程序分析

    1.裸函数 c语言的普通函数中即使什么都不写,编译器在编译时也会给它加上一些汇编代码:比如开栈.返回等: 裸函数就是编译器什么都不管,一切都需要自己来处理: 裸函数的优点是自由度高,可以应用在钩子程序 ...

  6. SpringMVC——返回值类型

    1.void作为返回值类型 如果你的方法写成了Void就跟原来Servlet含义是差不多的 @RequestMapping("/index*") public void first ...

  7. Vue_(组件)计算属性

    Vue计算属性中文文档 传送门 Vue计算属性:更强大的属性声明方式,可以对定义的属性进行逻辑处理与数据监视; 注意:模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑 ...

  8. ansible模块文件操作

    Ansible常用模块文件操作 [root@tiandong etc]# ansible-doc -l   列出ansible所支持的模块 [root@tiandong ~]# ansible-doc ...

  9. Vuex的基本原理与使用

    我们需要知道 vue 是单向数据流的方式驱动的 什么是vuex? 为什么要使用vuex ? - 多个视图依赖于同一状态. - 来自不同视图的行为需要变更同一状态. vuex 类似Redux 的状态管理 ...

  10. Backen-Development record 1

    单例模式 在应用这个模式时,单例对象的类必须保证只有一个实例存在. 服务进程中的其他对象再通过这个单例对象获取这些配置信息.这种方式简化了在复杂环境下的配置管理. __new__实现 用装饰器实现单例 ...