foreach和foreachPartition的区别
一,基本使用
1,RDD分布式数据集的五大特性
1),A list of partitions(一系列的分区)
2),A function for computing eachsplit(计算每个分片的方法)
3),A list of dependencies on otherRDDs(一系列的依赖RDD)
4),Optionally, a Partitioner forkey-value RDDs (e.g. to say that the RDD is hash-partitioned)
(可选,对于key-value类型的RDD都会有一个分区器)
5),Optionally, a list of preferredlocations to compute each split on (e.g. block locations for an HDFS file)(可选,最佳位置)
2,RDD的操作类型:
Transformations:转换操作,lazy型,不会触发计算
Action:触发job
Persist:缓存,也不会触发job,在第一次触发job之后才会真正进行缓存。
3,RDD的计算
RDD的计算实际上我们可以分为两个大部分:
1),Driver端的计算
主要是stage划分,task的封装,task调度执行
2),Executor端的计算
真正的计算开始,默认情况下每个cpu运行一个task。一个task实际上就是一个分区,我们的方法无论是转换算子里封装的,还是action算子里封装的都是此时在一个task里面计算一个分区的数据。
下面就那这两个例子,开始讲解吧,针对转换类型的操作可以类比查看。
[Scala] 纯文本查看 复制代码
01
02
03
04
|