SparkRDD
SparkRDD概念
1.采用装饰器设计模式,层层包装,类似于传输管道,本身不保留数据
2.类似于Java String这样的工具类
3.Spark基于MR设计,操作文件的类都采用MapReduce设计,因此SparkRDD的分区是依赖MapReduce的切片规则实现的。
在简单内存数据读取的过程中,分区按三个规则走,首先检查是否规定了任务的分区数,若没有则检查默认分区配置,没有则再采用分配的线程核数(local[])
在文件数据读取过程中,RDD的实际分区数计算方法:
1.先按目标分区数给每个分区分配空间
例如目前需要分类13byte,目标分区数2
每个分区的splitsize 13/2=6byte
剩余空间13%2=1<6x0.1=0.6 所以需要再设置一个分区(MapReduce中的切片) 总分区数就是3
根据hadoop的切片规则,若最后一次分区后所剩空间小于等于切片大小的0.1,则将其与最后一个切片压缩在一起,以避免小文件。
SparkRDD
http://example.com/2024/10/23/数仓开发/Spark/SparkRDD/