您使用的是δ表作為結構化的流媒體應用程序的水槽和你想優化三角洲表以便提高查詢的速度。
如果您的結構化的流媒體應用程序有一個非常頻繁觸發間隔,它也不會帶來足夠的文件在每個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 ()
您可以修改國防部作為適合結構化流媒體應用程序的價值。