使用DataFrame.合并以减少输出文件的数量



当我使用Spark HiveContext做像insert overwrite a select * from b这样的sql时,最后在HDFS的表对应的目录上有很多小文件(400+),其中很多是空文件。因此,我尝试使用coalesce来减少文件数量,示例代码为:

val df = hiveContext.sql("insert overwrite a select * from b")
df.coalesce(50).collect

但是输出文件仍然是400+,看起来coalesce不起作用。

有人能帮帮我吗?

您的示例将不会合并输出文件,因为coalesce是在执行SQL与insert intoinsert into结果之后完成的(我认为这是一个空的Dataframe)。

试着这样重写代码:

hiveContext.sql("select * from b").coalesce(50).write.mode("overwrite").saveAsTable("a")

相关内容

  • 没有找到相关文章