三角洲寫空文件當源是空的

三角洲可以寫空文件在運行時7.3 LTS磚。你應該升級到磚運行時9.1 LTS以上來解決這個問題。

寫的拉傑夫kannan Thangaiah

去年發表在:2022年12月2日

問題

三角洲寫會導致創建空文件如果源是空的。這可能發生在一個正常三角洲或寫合並成(AWS|Azure|GCP)操作。

如果你的流媒體應用程序寫入目標三角洲表和源數據是空的在某些微觀批次,它會導致寫作空文件到你的目標三角洲表。

空文件寫入一個增量表應該避免,因為他們可能會導致性能問題(例如太多的小文件,多個不必要的提交,等等)。如果有太多承諾發生在高頻率(無論是由於高頻事件的一個非常大的流入和/或由於低流觸發頻率配置),那麼它可能會導致很多小文件在目標δ表。這太多的小空文件可以增加整體上市時間,從而會阻礙後續讀取性能。

導致

空文件的寫作是一個已知的問題在運行時7.3 LTS磚。空寫創建額外的文件以及新版本在三角洲。

如果有一天1000個空寫你看到1000創建空文件隨著時間的積累。甚至一個表隻有三條記錄可以導致幾千空文件,根據頻率執行寫道。

例如,在這個示例δ提交,numOutputRows0然而,numTargetFilesAdded1。這意味著它增加了一個文件,即使沒有輸出行。

操作-寫{“numFiles”:“1”,“numOutputBytes”:“2675”,“numOutputRows”:“0”} OperationParameters{“模式”:“追加”,“partitionBy”:“[]”}操作——合並{“numOutputRows”:“0”,“numSourceRows”:“0”,“numTargetFilesAdded”:“1”,“numTargetFilesRemoved”:“0”,“numTargetRowsCopied”:“0”,“numTargetRowsDeleted”:“0”,“numTargetRowsInserted”:“0”,“numTargetRowsUpdated”:“0”}

解決方案

你應該升級集群磚運行時9.1 LTS或以上。

磚運行時9.1 LTS和包含一個解決以上問題,不再創建空文件空寫道。

刪除

信息

如果你不能升級到磚運行時9.1 LTS或以上,你應該定期運行優化(AWS|Azure|GCP)影響表清理空文件。這不是一個永久性的修複和應該考慮解決方案,直到你可以升級到一個新的運行時。


這篇文章有用嗎?