我正在使用开源版本将大量数据写入 Databricks Delta Lake,在 AWS EMR 上运行,并以 S3 作为存储层。我正在使用 EMRFS。
为了提高性能,我经常压缩和清理桌子,如下所示:
spark.read.format("delta").load(s3path)
.repartition(num_files)
.write.option("dataChange", "false").format("delta").mode("overwrite").save(s3path)
t = DeltaTable.forPath(spark, path)
t.vacuum(24)
Run Code Online (Sandbox Code Playgroud)
然后它会从 S3 中删除 10 万个文件。然而,真空步骤需要极长的时间。在此期间,作业似乎处于空闲状态,但每隔约 5-10 分钟就会出现一个小任务,表明作业处于活动状态并正在执行某些操作。

我读过这篇文章Spark:作业之间的长时间延迟,这似乎表明它可能与镶木地板有关?但我在增量方面没有看到任何选项来调整任何参数。