RDD 处理和操作

简介: RDD 处理和操作

除了 RDD 的创建和基本操作,还有 RDD 的转换和动作操作可以对 RDD 进行处理和操作。

  1. RDD 转换操作:
  • map(): 针对 RDD 中的每个元素进行转换,返回一个新的 RDD。例如:
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))
val newRdd = rdd.map(_ * 2)
  • filter(): 对 RDD 中的每个元素进行过滤,返回一个新的 RDD。例如:
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))
val newRdd = rdd.filter(_ % 2 == 0)
  • flatMap(): 针对 RDD 中的每个元素进行扁平化操作,返回一个新的 RDD。例如:
val rdd = sc.parallelize(List("apple pear", "banana orange", "watermelon"))
val newRdd = rdd.flatMap(line => line.split(" "))
  • groupByKey(): 按照 RDD 中 key 进行分组,在返回一个新的元素为 (K, Iterable[V]) 结构的 RDD。例如:
val rdd = sc.parallelize(Array("Hello World", "Hello Spark", "Hello Java"))
val pairRdd = rdd.flatMap(line => line.split(" ")).map(word => (word, 1))
val groupRdd = pairRdd.groupByKey()
  • reduceByKey(): 分组后对每一个 key 的 value 进行 reduce 操作。例如:
// 统计单词数,key 为单词,value 为出现的次数
val rdd = sc.parallelize(Array("Hello World", "Hello Spark", "Hello Java"))
val pairRdd = rdd.flatMap(line => line.split(" ")).map(word => (word, 1))
val result = pairRdd.reduceByKey(_ + _)
  • join(): 将两个 RDD 进行 join 操作,返回一个新的 RDD。例如:
val rdd1 = sc.parallelize(Array(("A", 1), ("B", 2), ("C", 3)))
val rdd2 = sc.parallelize(Array(("C", 4), ("B", 5), ("D", 6)))
val joinRdd = rdd1.join(rdd2)
  1. RDD 动作操作:
  • count(): 统计 RDD 中元素个数,返回一个 long 类型整数。例如:
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))
val count = rdd.count()
  • collect(): 将 RDD 中所有元素收集到 driver 端,返回一个新的数组。例如:
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))
val arr = rdd.collect()
  • saveAsTextFile(): 将 RDD 中的元素保存到文本文件中,该操作是一个懒操作,只有调用动作操作时才触发计算。例如:
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))
rdd.saveAsTextFile("hdfs://output.txt")
  • reduce(): 对 RDD 中所有元素进行 reduce 操作,返回一个单独的元素。例如:
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))
val result = rdd.reduce((a, b) => a + b)

了解 RDD 的转换和动作操作可以帮助开发者更好地处理和操作 RDD 数据。Spark 编程中,针对具体场景选择相应的转换和动作操作可以提高代码效率和准确率。

目录
相关文章
|
2月前
|
存储 缓存 分布式计算
Spark学习--day04、RDD依赖关系、RDD持久化、RDD分区器、RDD文件读取与保存
Spark学习--day04、RDD依赖关系、RDD持久化、RDD分区器、RDD文件读取与保存
|
2月前
|
分布式计算 数据处理 Apache
Spark RDD的行动操作与延迟计算
Spark RDD的行动操作与延迟计算
Spark RDD的行动操作与延迟计算
|
2月前
|
分布式计算 Hadoop 数据处理
Spark【RDD编程(三)键值对RDD】
Spark【RDD编程(三)键值对RDD】
|
11月前
|
存储 缓存 分布式计算
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(二)
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(二)
|
11月前
|
存储 缓存 分布式计算
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(一)
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(一)
|
12月前
|
存储 SQL 弹性计算
Spark RDD 机制理解吗?RDD 的五大属性,RDD、DataFrame、DataSet 三者的关系,RDD 和 DataFrame 的区别,Spark 有哪些分区器【重要】
Spark RDD 机制理解吗?RDD 的五大属性,RDD、DataFrame、DataSet 三者的关系,RDD 和 DataFrame 的区别,Spark 有哪些分区器【重要】
741 0
|
存储 分布式计算 Ubuntu
|
存储 缓存 分布式计算
深入 RDD_定义_RDD 的特点 | 学习笔记
快速学习 深入 RDD_定义_RDD 的特点
91 0
深入 RDD_定义_RDD 的特点 | 学习笔记
|
分布式计算 大数据 开发者
Rdd 算子_转换_groupbykey | 学习笔记
快速学习 Rdd 算子_转换_groupbykey
124 0
Rdd 算子_转换_groupbykey | 学习笔记
|
分布式计算 大数据 Shell
RDD 的分区和 shuffle 创建 RDD 时指定分区数 | 学习笔记
快速学习 RDD 的分区和 shuffle 创建 RDD 时指定分区数
79 0
RDD 的分区和 shuffle 创建 RDD 时指定分区数 | 学习笔记

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    27
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    27
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    25
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    23
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    21
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    21
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    20