大数据全系列 教程
1869个小节阅读:467.1k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
package com.itbaizhan.rdd.action
//1.导入类
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import scala.collection.mutable.ListBuffer
object RddForeachPartition {
def main(args: Array[String]): Unit = {
//2.构建SparkConf对象,并设置本地运行和程序名称
val conf: SparkConf = new SparkConf().setMaster("local[1]").
setAppName("ForeachPartition")
//3.使用conf对象构建SparkContet对象
val sc = new SparkContext(conf)
//5.创建RDD对象
val rdd: RDD[String] = sc.parallelize(List("a", "b", "c", "e", "f", "d"), 3)
//6.自定义处理函数
def process(datas: Iterator[String]): Unit = {
println("操作一-开始一个分区...")
val result = ListBuffer[String]()
for(data<-datas){
result.append(data)
}
println("当前分区的数据:"+result)
println("操作二-结束一个分区...")
}
//7.调用foreachPartition算子,参数为自定义函数
rdd.foreachPartition(process)
//4.关闭sc对象
sc.stop()
}
}
运行结果:
xxxxxxxxxx
操作一-开始一个分区...
当前分区的数据:ListBuffer(a, b)
操作二-结束一个分区...
操作一-开始一个分区...
当前分区的数据:ListBuffer(c, e)
操作二-结束一个分区...
操作一-开始一个分区...
当前分区的数据:ListBuffer(f, d)
操作二-结束一个分区...
实时效果反馈
1. 以下关于rdd.foreachPartition(process)
的描述错误的是:
A 与mapPartition类似,遍历的单位是每个partition上的数据。
B rdd中的一个分区的数据调用执行一次process
函数。
C 参数process
自定义每个分区的处理逻辑,它是一个函数。
D foreachPartition
函数的返回值为RDD。
答案:
1=>D foreachPartition是行动算子,返回值不是RDD。