控制在Spark SQL 1.6中写入外部Hive表的文件数

时间:2017-01-11 15:45:57

标签: apache-spark hive

我正在Apache Spark 1.6.3中写入分区的外部配置单元格(格式为实木复合地板)。我想为每个分区写1个文件(数据很小,我想避免许多小文件的开销)。假设分区列为date。我可以这样做:

 df
  .coalesce(1)
  .write.mode("overwrite").partitionBy("date")
  .insertInto(newTable)

但这使得insertInto阶段只有1个任务,尽管创建了许多不同的文件。那么为什么不使用多个任务来编写文件而不是使用1个任务来编写所有文件。

另一方面,如果省略coalesce(1),每个hive分区会收到大量的小文件。

那么如何加快上述代码呢?或者更一般地说,如何控制插入Hive表时创建的文件数量(不使用coalesce(1))?

0 个答案:

没有答案