假设path为一个parquet文件目录,该目录下有64个part。大小共100G,数据均匀分布,采用gz或snappy等不可分割的压缩算法。
那么执行以下代码。会起多少个task呢?
val df = spark.read.parquet(path)
df.count
博主以为gz文件不可分割,所以会起64个part。但是结果起了1000+个task。
原因:
parquet文件压缩是内部数据分块压缩,而不是整个压缩。也就是说所谓的不可分割指的是block不可分割。
起的task数目应该是block个数,block的大小可由 parquet.block.size 控制