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 编程中,针对具体场景选择相应的转换和动作操作可以提高代码效率和准确率。

目录
相关文章
|
1月前
|
JSON 分布式计算 大数据
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
31 1
|
6月前
|
存储 缓存 分布式计算
Spark学习--day04、RDD依赖关系、RDD持久化、RDD分区器、RDD文件读取与保存
Spark学习--day04、RDD依赖关系、RDD持久化、RDD分区器、RDD文件读取与保存
|
6月前
|
分布式计算 数据处理 Apache
Spark RDD的行动操作与延迟计算
Spark RDD的行动操作与延迟计算
Spark RDD的行动操作与延迟计算
|
6月前
|
分布式计算 Hadoop 数据处理
Spark【RDD编程(三)键值对RDD】
Spark【RDD编程(三)键值对RDD】
|
存储 缓存 分布式计算
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(一)
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(一)
|
存储 缓存 分布式计算
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(二)
Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化(二)
|
分布式计算 数据处理 Spark
RDD 中 groupByKey 和 reduceByKey 哪个性能好,为什么?
RDD 中 groupByKey 和 reduceByKey 哪个性能好,为什么?
139 0
|
存储 SQL 弹性计算
Spark RDD 机制理解吗?RDD 的五大属性,RDD、DataFrame、DataSet 三者的关系,RDD 和 DataFrame 的区别,Spark 有哪些分区器【重要】
Spark RDD 机制理解吗?RDD 的五大属性,RDD、DataFrame、DataSet 三者的关系,RDD 和 DataFrame 的区别,Spark 有哪些分区器【重要】
1070 0
|
存储 分布式计算 Ubuntu
|
存储 缓存 分布式计算
RDD上的持久化操作
RDD上的持久化操作