假設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 控制