Spark RDD

一、什么是 RDD

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。

➢ 弹性

⚫ 存储的弹性:内存与磁盘的自动切换

⚫ 容错的弹性:数据丢失可以自动恢复

⚫ 计算的弹性:计算出错重试机制

⚫ 分片的弹性:可根据需要重新分片。

➢ 分布式:数据存储在大数据集群不同节点上

➢ 数据集:RDD 封装了计算逻辑,并不保存数据

➢ 数据抽象:RDD 是一个抽象类,需要子类具体实现

➢ 不可变:RDD 封装了计算逻辑,是不可以改变的,想要改变,只能产生新的 RDD,在

新的 RDD 里面封装计算逻辑

➢ 可分区、并行计算

二、Spark中的RDD(弹性分布式数据集)有以下常用API:

map(func): 对RDD中的每个元素应用给定的函数,并返回一个新的RDD。
scala 复制代码
  val mapRDD = rdd.map(
    num => {
      // 使用累加器
      sumAcc.add(num)
      num
    }
  )
filter(func): 根据给定的函数过滤RDD中的元素,并返回一个新的RDD。
scala 复制代码
  val orderActionRDD = actionRDD.filter(
    action => {
      val datas = action.split("_")
      datas(8) != "null"
    }
  )
flatMap(func): 对RDD中的每个元素应用给定的函数,并将结果扁平化为一个新的RDD。
scala 复制代码
val words: RDD[String] = lines.flatMap(_.split(" "))
reduce(func): 使用给定的函数将RDD中的所有元素聚合成一个值。
scala 复制代码
  val wordCount = mapWord.reduce(
    (map1, map2) => {
      map2.foreach {
        case (word, count) => {
          val newCount = map1.getOrElse(word, 0L) + count
          map1.update(word, newCount)
        }
      }
      map1
    }
  )
collect(): 将RDD中的所有元素收集到驱动程序节点的数组中。
scala 复制代码
mapRDD.collect()
  1. count(): 返回RDD中的元素个数。

    scala 复制代码
    val cnt = rdd.count()
  2. first(): 返回RDD中的第一个元素。

    scala 复制代码
    val first = rdd.first()
  3. take(n): 返回RDD中的前n个元素。

    scala 复制代码
    val ints: Array[Int] = rdd.take(3)
  4. takeSample(withReplacement, num, seed): 从RDD中随机抽取样本。

    scala 复制代码
  5. foreach(func): 对RDD中的每个元素应用给定的函数,但不返回结果。

    scala 复制代码
    rdd.foreach(
     num => {
    // 使用累加器
       sumAcc.add(num)
      }
    )
  6. foreachPartition(func): 对RDD中的每个分区应用给定的函数。

    scala 复制代码
      rdd.foreachPartition(iter => {
        val conn = JDBCUtil.getConnection
        iter.foreach {
          case ((day, user, ad), count) => {
    
          }
        }
        conn.close()
      })
  7. groupByKey(): 根据键值对RDD中的键进行分组。

    scala 复制代码
  8. reduceByKey(func): 根据键值对RDD中的键进行聚合。

    scala 复制代码
  9. aggregateByKey(zeroValue, seqOp, combOp): 根据键值对RDD中的键进行聚合。

    scala 复制代码
  10. sortBy(keyFunc): 根据给定的键函数对RDD中的元素进行排序。

    scala 复制代码
  11. sortBy(keyFunc, ascending): 根据给定的键函数和升序标志对RDD中的元素进行排序。

    scala 复制代码
  12. union(other): 合并两个RDD。

    scala 复制代码
  13. intersection(other): 计算两个RDD的交集。

    scala 复制代码
  14. subtract(other): 计算两个RDD的差集。

    scala 复制代码
  15. distinct(): 去除RDD中的重复元素。

    scala 复制代码
  16. cartesian(other): 计算两个RDD的笛卡尔积。

    scala 复制代码
  17. pipe(command): 使用外部命令处理RDD中的数据。

    scala 复制代码
  18. saveAsTextFile(path): 将RDD保存为文本文件。

    scala 复制代码
  19. textFile(path): 从文本文件中读取数据并创建RDD。

    scala 复制代码
  20. parallelize(data): 从集合中创建RDD。

    scala 复制代码
  21. toDF(): 将RDD转换为DataFrame。

    scala 复制代码
  22. toDS(): 将RDD转换为Dataset。

    scala 复制代码

这些API是Spark RDD编程模型中最常用的一些,它们可以帮助你完成数据处理、转换和聚合等任务。

相关推荐
建筑工程企业管理系统7 分钟前
erp工程项目管理系统落地价值:实现工程多项目成本精细化核算与管控
大数据·数据库·人工智能
万岳科技系统开发20 分钟前
校园跑腿外卖搭建助力高校周边商家拓展线上业务
大数据·人工智能·小程序
理想家小杨总2 小时前
2026年|知名谷歌推广平台甄选:外贸独立站建站深度测评
大数据·独立站搭建·谷歌建站·国内外贸建站服务商推荐·外贸出海建站·谷歌独立站搭建·谷歌建站服务商
就是一顿骚操作2 小时前
全球 AI 大事件新闻汇总 2026-08-01
大数据·人工智能
2601_960356385 小时前
数学专业“考证”新思路:为学术与职业双重赋能
大数据
西门啐血5 小时前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
zhixingheyi_tian6 小时前
Mapreduce 之 nativetask
大数据·mapreduce
丙氨酸長鏈7 小时前
[Bukkit插件开发]手持发射器箭矢机枪 教学文档 面向Python/C#开发者入门Java与Bukkit API
java·python·c#
淡海水7 小时前
12-01-YooAsset工程化-Unity资源管理规范
unity·c#·游戏引擎·yooasset
远航计算机7 小时前
职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册
大数据·人工智能·自动化·aigc·火山引擎