我正在向apachespark1.6.3中的一个分区的外部配置单元表(format parquet)进行写入。我希望每个分区写一个文件(数据很小,我希望避免许多小文件的开销)。假设分区列是 date
. 我可以这样做:
df
.coalesce(1)
.write.mode("overwrite").partitionBy("date")
.insertInto(newTable)
但这让我的任务只有一个 insertInto
尽管创建了许多不同的文件。那么spark为什么不使用多个任务来编写文件,而不是使用一个任务来编写所有文件呢。
另一方面,如果我忽略 coalesce(1)
,我得到了大量的小文件每个Hive分区。
那么我怎样才能加速上面的代码呢?或者更一般地说,如何控制在插入配置单元表时创建的文件数(不使用 coalesce(1)
)?
暂无答案!
目前还没有任何答案,快来回答吧!