优化三角洲沉在一个结构化的流媒体应用程序

优化你的三角洲水槽使用国防部价值batchId foreachBatch运行时优化。

写的mathan.pillai

去年发表在:2022年5月10日

您使用的是δ表作为结构化的流媒体应用程序的水槽和你想优化三角洲表以便提高查询的速度。

如果您的结构化的流媒体应用程序有一个非常频繁触发间隔,它也不会带来足够的文件在每个microbatch资格获得压实。

autoOptimize操作压缩到128 MB的文件。一个显式的优化操作契约三角洲湖文件1 GB的文件。

如果你没有足够数量的合格文件在每个microbatch,你应该定期优化增量表文件。

使用foreachBatch国防部价值

最简单的方法之一,定期优化三角洲表沉在一个结构化的流媒体应用程序是通过使用foreachBatchmicrobatch国防部价值batchId

假设您有一个流DataFrame从三角洲创建表。你使用foreachBatch写作时的流DataFrame三角洲下沉。

foreachBatch,国防部的价值batchId因此,使用优化操作运行后每10 microbatches,zorder每101 microbatches后操作运行。

% scala val df = spark.readStream.format(“δ”).table df.writeStream.format(“<表名称>”)(“δ”).foreachBatch {(batchDF: DataFrame batchId:长)= > batchDF.persist()如果(batchId % 10 = = 0){火花。sql(“优化<表名称>”)}如果(batchId % 101 = = 0){火花。sql(“优化<表名> (< zorder-column-name >) zorder”)} batchDF.write.format .mode(“δ”)(“追加”).saveAsTable(“<表名称>”)}.outputMode(“更新”).start ()

您可以修改国防部作为适合结构化流媒体应用程序的价值。


这篇文章有用吗?