Spark读取数据分几个区
所有block块最多是128M大小
exam: 两个文件一个 100bit 一个124bit
会计算所有block块字节数总和 除以最小分区数(默认为2) 得到goalsize 224/2=112
如果有文件块大于 goalsize的1.1倍 124/112=1.107 > 1.1
则将这个大文件分为两个区
0~112
112~124
如果想要按文件数量分区 则设置最小分区数为1 则没有文件数可以超过goalsize 就不用拆分了
mapPartitions map MapPartitionsRdd MapPartitionsWithIndex
mapPartitions 对迭代器操作
map对迭代器的数据操作
mapPartitionsRdd 对迭代器操作 map底层实现原理
mapPartitionswithIndex 可以加上分区编号
如果map方法里面有一个链接 用mapPartitions更好 用map每次都要建立连接 后者只需一次
reducedByKey
下游分区数量默认和上游一致
key为null的都分到0区
如果null值太多 会发生数据倾斜,过滤一下处理一下