实例一:

teacher.log

  1. http://bigdata.baidu.cn/zhangsan
  2. http://bigdata.baidu.cn/zhangsan
  3. http://bigdata.baidu.cn/lisi
  4. http://bigdata.baidu.cn/lisi
  5. http://bigdata.baidu.cn/lisi
  6. http://bigdata.baidu.cn/lisi
  7. http://bigdata.baidu.cn/lisi
  8. http://bigdata.baidu.cn/wangwu
  9. http://bigdata.baidu.cn/wangwu
  10. http://javaee.baidu.cn/xiaoxu
  11. http://javaee.baidu.cn/xiaoxu
  12. http://javaee.baidu.cn/laoyang
  13. http://javaee.baidu.cn/laoyang
  14. http://javaee.baidu.cn/laoyang
  15. http://bigdata.baidu.cn/lisi
  16. http://bigdata.baidu.cn/lisi
  17. http://bigdata.baidu.cn/lisi
  18. http://bigdata.baidu.cn/lisi
  19. http://bigdata.baidu.cn/lisi
  20. http://bigdata.baidu.cn/wangwu
  21. http://bigdata.baidu.cn/wangwu
  22. http://javaee.baidu.cn/xiaoxu
  23. http://javaee.baidu.cn/xiaoxu
  24. http://javaee.baidu.cn/laoyang
  25. http://javaee.baidu.cn/laoyang
  26. http://javaee.baidu.cn/laoyang
  27. http://bigdata.baidu.cn/lisi
  28. http://bigdata.baidu.cn/lisi
  29. http://bigdata.baidu.cn/lisi
  30. http://bigdata.baidu.cn/lisi
  31. http://bigdata.baidu.cn/lisi
  32. http://bigdata.baidu.cn/wangwu
  33. http://bigdata.baidu.cn/wangwu
  34. http://javaee.baidu.cn/xiaoxu
  35. http://javaee.baidu.cn/xiaoxu
  36. http://javaee.baidu.cn/laoyang
  37. http://javaee.baidu.cn/laoyang
  38. http://javaee.baidu.cn/laoyang
  39. http://php.baidu.cn/laoli
  40. http://php.baidu.cn/laoliu
  41. http://php.baidu.cn/laoli
  42. http://php.baidu.cn/laoli

全局topn  组内topn

代码:

  1. package dayo1
  2.  
  3. import java.net.URL
  4.  
  5. import org.apache.spark.rdd.RDD
  6. import org.apache.spark.{SparkConf, SparkContext}
  7.  
  8. object teacher2 {
  9. def main(args: Array[String]): Unit = {
  10. val conf = new SparkConf ()
  11. .setAppName ( this.getClass.getSimpleName )
  12. .setMaster ( "local[1]" )
  13.  
  14. val sc = new SparkContext ( conf )
  15.  
  16. val lines = sc.textFile ( "E:\\teacher.log" )
  17.  
  18. val overAll: RDD[((String, String), Int)] = lines.map ( tp => {
  19. val teacher: String = tp.split ( "/" ).last
  20. val host = new URL ( tp ).getHost
  21. val subject = host.substring ( , host.indexOf ( "." ) )
  22. ((teacher, subject), )
  23. } )
  24. //所有科目和老师的前三
  25. val topOverAll = overAll.reduceByKey ( _ + _ ).sortBy ( -_._2 ).take ( ).foreach ( println )
  26.  
  27. //每个科目前两名的老师
  28. val topGroup = overAll.reduceByKey ( _ + _ ).groupBy ( _._1._2 ).mapValues ( _.toList.sortBy ( -_._2 ).take ( ) ).foreach ( println )
  29. sc.stop ()
  30.  
  31. }
  32. }

实例二:

去重

  1. file1:
  2. -- a
  3. -- b
  4. -- c
  5. -- d
  6. -- a
  7. -- b
  8. -- c
  9. -- c
  10.  
  11. file2:
  12. -- b
  13. -- a
  14. -- b
  15. -- d
  16. -- a
  17. -- c
  18. -- d
  19. -- c

代码:

  1. package dayo1
  2.  
  3. import org.apache.spark.{SparkConf, SparkContext}
  4.  
  5. object distinct {
  6. def main(args: Array[String]): Unit = {
  7. val cof = new SparkConf ()
  8. .setAppName ( this.getClass.getSimpleName )
  9. .setMaster ( "local[1]" )
  10.  
  11. val sc = new SparkContext ( cof )
  12.  
  13. val file1 = sc.textFile ( "E:\\file1.txt" )
  14. val file2 = sc.textFile ( "E:\\file2.txt" )
  15. val list = file1.union ( file2 ).distinct ().sortBy ( tp => tp )
  16. list.foreach ( println )
  17. sc.stop ()
  18. }
  19. }

实例三:

temperature.txt

  1. 0067011990999991950051507004888888889999999N9++
  2. 0067011990999991950051512004888888889999999N9++
  3. 0067011990999991950051518004888888889999999N9-+
  4. 0067011990999991949032412004888888889999999N9++
  5. 0067011990999991950032418004888888880500001N9++
  6. 0067011990999991950051507004888888880500001N9++

需求:分析每年的最高温度

代码:

  1. package dayo1
  2.  
  3. import org.apache.spark.{SparkConf, SparkContext}
  4.  
  5. /**
  6. * 0067011990999991950051507004888888889999999N9+00001+9999999999999999999999
  7. * 0067011990999991950051512004888888889999999N9+00221+9999999999999999999999
  8. * 0067011990999991950051518004888888889999999N9-00111+9999999999999999999999
  9. * 0067011990999991949032412004888888889999999N9+01111+9999999999999999999999
  10. * 0067011990999991950032418004888888880500001N9+00001+9999999999999999999999
  11. * 0067011990999991950051507004888888880500001N9+00781+9999999999999999999999
  12. *
  13. * 12345678911234567892123456789312345678941234567895123456789612345678971234
  14. * 需求:分析每年的最高温度
  15. * 数据说明:
  16. *
  17. *
  18. * 第15-19个字符是year 6-9
  19. *
  20. * 第45-50位是温度表示,+表示零上 -表示零下,且温度的值不能是9999,9999表示异常数据
  21. *
  22. * 第50位值只能是0、1、4、5、9几个数字
  23. */
  24. object temperature {
  25. def main(args: Array[String]): Unit = {
  26. val cof = new SparkConf ()
  27. .setAppName ( this.getClass.getSimpleName )
  28. .setMaster ( "local[*]" )
  29. val sc = new SparkContext ( cof )
  30.  
  31. val lines = sc.textFile ( "E:\\temperature.txt" )
  32.  
  33. val yearAndTemp = lines.filter ( tp => {
  34. var temp =
  35. val query = tp.charAt ( ).toString //val query=tp.subString(50,51)
  36. if (tp.charAt ( ).equals ( "+" )) {
  37. temp = tp.substring ( , ).toInt
  38. } else {
  39. temp = tp.substring ( , ).toInt
  40. }
  41. temp != && query.matches ( "[01459]" )
  42.  
  43. } ).map ( tp => {
  44.  
  45. val year = tp.substring ( , )
  46. var temp =
  47. if (tp.charAt ( ).equals ( "+" )) {
  48. temp = tp.substring ( , ).toInt
  49. } else {
  50. temp = tp.substring ( , ).toInt
  51. }
  52.  
  53. (year, temp)
  54. } )
  55.  
  56. val res = yearAndTemp.reduceByKey ( (x, y) => if (x > y) x else y )
  57.  
  58. res.foreach ( tp => println ( "year:" + tp._1 + " temp:" + tp._2 ) )
  59. sc.stop ()
  60. }
  61. }

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. 【算法学习笔记】RMQ问题与ST表

    \(0.\) RMQ问题 P1816 人话翻译 给定一个长度为\(n\)的数列\(a\),然后有\(m\)组询问,每次询问一个区间\([l,r]\)的最小值. 其中\(m,n\leq10^5\) \( ...

  2. C# class 浅拷贝 与 深拷贝

    MemberwiseClone 方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象.如果字段是值类型的,则对该字段执行逐位复制.如果字段是引用类型,则复制引用但 ...

  3. Python numpy.ZIP 安装问题

    今天在python上安装numpy,按照网上教程,安装pip,然后命令行直接:pip install numpy  .但是一直因为资源问题下载失败. 后来下载了一个numpy-1.11.2.zip 安 ...

  4. css 命名规范 BEM

    在项目的开发过程当中, 我们往往因为日益复杂的css代码而感到力不从心. 如何合理的组织css代码成为了我们前端开发过程中必须考虑到的环节. 在读element源代码的时候, 了解到了BEM的命名风格 ...

  5. union不支持orderByClause、clusterByClause、distributeByClause、sortByClause或limitClause

    union all union 相同点 是 相当于上下拼接 上下两个拼接表必须字段保持一致 不同 union有去重效果,速度会更慢. ================================= ...

  6. wind本地MySQL数据到hive的指定路径,Could not create file

    一:使用:kettle:wind本地MySQL数据到hive的指定路径二:问题:没有root写权限网上说的什么少jar包,我这里不存在这种情况,因为我自己是导入jar包的:mysql-connecto ...

  7. Spring Batch 4.2 新特性

    Spring Batch 4.2 的发行版主要增强了下面的改进: 使用 Micrometer 来支持批量指标(batch metrics) 支持从 Apache Kafka topics 读取/写入( ...

  8. 2019暑假集训 windy数

    题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为2的正整数被称为 Windy 数. Windy 想知道,在A和B之间,包括A和B,总共有多少个 Windy 数? 输 ...

  9. 快速乘(O(1))

    inline long long multi(long long x,long long y,long long mod) { long long tmp=(x*y-(long long)((long ...

  10. [CSP-S模拟测试]:序列(二分答案+树状数组)

    题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1 ...