• RDD弹性分布式数据集(Resilient Distributed Dataset)是 Spark 最基本也是最根本数据抽象

  • RDD 它具备像 MapReduce 等数据流模型容错性(fault-tolerant),

    为了实现容错,RDD 提供了一种高度受限的共享内存,即 RDD 是只读的,并且只能通过其他 RDD 上的批量操作来创建。

  • 它允许开发者在大型集群上执行基于内存的计算

1. 常用算子

算子指的是 RDD 下的成员函数;

  • transformation 型算子

    • reduceByKey
    • flatMap
    val chars = sc.parallelize(Array("a b c", "d e f", "h i j"))
    chars.flatMap(_.split('')).collect// Array[String] = Array(a, b, c, d, e, f, h, i, j)
    
    • join
    val rdd1 = sc.parallelize(List(("tom", 1), ("jerry", 3), ("kitty", 2)))
    val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2)))
    (rdd1 join rdd2).collect// Array((tom,(1,1)), (jerry,(3,2)))
    
    • reduceByKey vs. groupByKey
    val unionRdd = rdd1 union rdd2
    // groupByKey 的返回值
    unionRdd.groupByKey().collect// Array((shuke,CompactBuffer(2)), (tom,CompactBuffer(1, 1)), (kitty,CompactBuffer(2)), (jerry,CompactBuffer(3, 2)))
    unionRdd.groupByKey().mapValues(_.sum).collect// Array[(String, Int)] = Array((shuke,2), (tom,2), (kitty,2), (jerry,5))
    unionRdd.reduceByKey(_+_).collect// Array[(String, Int)] = Array((shuke,2), (tom,2), (kitty,2), (jerry,5))
    
    • cogroup 与 groupByKey
    val rdd6 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2)))
    val rdd7 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("tom", 3), ("shuke", 2)))
    rdd7.cogroup(rdd6).collect// Array((tom,(CompactBuffer(1, 3),CompactBuffer(1))), (jerry,(CompactBuffer(2),CompactBuffer(2))), (shuke,(CompactBuffer(2),CompactBuffer(2))))
    
  • action 型算子

    • reduce

2. 辨异

  • transformation 型的 map 算子与 action 型的 foreach 算子:

    • 都是遍历;
    • map 算子有返回值(new MapPartitionsRDD),foreach 算子无返回值;
    • foreach 比如应用于:
      • println:rdd.foreach(println)
      • 数据库交互;

Spark 基础——RDD 算子相关推荐

  1. spark常用RDD算子 汇总(java和scala版本)

    github: https://github.com/zhaikaishun/spark_tutorial  spark RDD的算子挺多,有时候如何灵活的使用,该如何用一下子想不起来,这一段时间将s ...

  2. Spark 基础 —— RDD(一)

    1. Spark 为 RDD 提供的成员函数 .stats():包括(count:计数,mean:均值,stdev:标准差,max:最大,min:最小值) countByValue:执行统计计数 根据 ...

  3. Spark常用RDD算子 - saveAsTextFile、saveAsObjectFile 可保存到本地文件或hdfs系统中

    saveAsTextFile 函数原型 def saveAsTextFile(path: String): Unit def saveAsTextFile(path: String, codec: C ...

  4. Spark 基础 —— RDD(创建 RDD)的两种方式

    弹性分布式数据集(Resilient Distributed Dataset),简称 RDD,RDD 是 Spark 所提供的最基本的数据抽象,代表分布在集群中多台机器上的对象集合.Spark 有两种 ...

  5. spark常用RDD算子 - take(),takeOrdered(),top(),first()

    take(),takeOrdered(),top() 返回一个列表,first()返回一个值 take def take(num: Int): Array[T] take用于获取RDD中从0到num- ...

  6. Spark框架——RDD算子mapPartitions迭代器(基于Scala语言)

    /*mapPartitions 和map算子是一样的,只不过map是针对每一条数据进行转换,mapPartitions 针对一整个分区的数据进行转换 1.map的func的参数是单条数据,mapPar ...

  7. 学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)

    文章目录 一.创建RDD 1.1.启动Spark shell 1.2.创建RDD 1.2.1.从集合中创建RDD 1.2.2.从外部存储中创建RDD 任务1: 二.RDD算子 2.1.map与flat ...

  8. Spark基础学习笔记17:掌握RDD算子

    文章目录 零.本讲学习目标 一.RDD算子 二.准备工作 (一)准备文件 1.准备本地系统文件 2.准备HDFS系统文件 (二)启动Spark Shell 1.启动HDFS服务 2.启动Spark服务 ...

  9. Spark RDD算子介绍

    Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理.交互式查询(Spark SQL).实时流处理(Spark Streaming).机器学习(Spark MLlib) ...

最新文章

  1. 你知道Unity IoC Container是如何创建对象的吗?
  2. html 书架样式css,CSS3 响应式书架布局
  3. Openssl和PKCS#11的故事
  4. JSON学习笔记(二)- 对象
  5. celery4不支持djcelery
  6. mysql 导入dbm文件_DBM数据导入到mysql数据库方法
  7. 国科大prml--SVM
  8. Linux系统下搭建BUG管理系统---禅道
  9. mysql结果行数_取得数据库结果集中的行数
  10. 五分钟快速过完Verilog HDL基本概念(3)语法讲解
  11. 挑选了适合测试边界的汉字及截图
  12. 论坛mysql表设计_网站论坛如何制作—简单论坛数据库的设计与操作
  13. 恶意软件清理助手V2.6.3 build 005 2007-07-05
  14. 计算机网络面试题汇总
  15. 领导力学习笔记(1118 周一)
  16. 如何将多个域名指向一个网址
  17. Qt下载安装教程,windows10亲测可用,版本5.12.11
  18. 如何利用语音评测技术设计英语口语选择题
  19. 一文读懂APS系统的核心算法和数学理论
  20. 在线预览 Word、Excel、PowerPoint 文档——Office Online插件使用

热门文章

  1. 微服务笔记(一) 搭建服务治理中心
  2. Bug:No mapping for GET /onepill//swagger-ui.html
  3. linux端口扫描脚本ip段,shell脚本结合iptables防端口扫描的实现
  4. el-form 动态校验规则_动态多线程敏感信息泄露检测工具
  5. 剑指offer面试题38. 字符串的排列(回溯)
  6. Numpy知识点:np.expand_dims()np.argmax()
  7. 关于如何打开一张jpg图片文件并存放到vector unsigned char中的讨论
  8. php高强度精密涂覆钢管,电力内外涂覆钢管
  9. 去除地址栏带#的问题
  10. Java学习笔记 06 数字格式化及数学运算