前言
spark怎么知道读取的是本地文件还是hdfs的文件呢?
前面写过一篇博客【spark2的textFile()是怎么实例化各个不同的fs(FileSystem)】,主要是指【本地文件系统】和【hadoop文件系统】,我们看到源码里最后是根据文件路径url的scheme来判断的:
file: LocalFileSystem
hdfs: DistributeFileSystem
1、获取blockSize
1、直接从InputSplit[] getSplits(JobConf job, int numSplits)说起
2、因为前部分是跟读取本地文件是一样的,所以不重复写了,具体可参考博客内 【spark读取 本地/可分割/单个 的文件时是如何划分分区】
1.1、集群blockSzie=256M,hdfs文件blockSize=256M:
1.2、集群blockSzie=256M,hdfs文件blockSize=128M:
结论:blockSize跟集群的配置无关,至于hdfs文件真实的blockSize有关