如何在Delta Lake合并输出中控制文件编号

时间:2019-11-19 06:42:41

标签: apache-spark partition delta-lake

我正在将Delta Lake 0.4.0与Merge一起使用:

target.alias("t")
          .merge(
            src.as("s"),
            "s.id = t.id 
          )
          .whenMatched().updateAll()
          .whenNotMatched().insertAll()
          .execute()

src从包含数千个文件的文件夹中读取。合并结果也会生成许多小文件。有没有一种方法可以控制合并结果中的文件编号,例如repartition(1)或coalesce(1)的效果?

谢谢

2 个答案:

答案 0 :(得分:0)

无法通过Delta输出操作来控制文件数量。而是在适当的时候使用OPTIMIZE,或者在诸如Databricks的平台上使用auto-optimization

答案 1 :(得分:0)

根据https://docs.delta.io/latest/delta-update.html#performance-tuning,您现在可以将spark.delta.merge.repartitionBeforeWrite设置为true以避免发生这种情况。