問題
三角洲寫會導致創建空文件如果源是空的。這可能發生在一個正常三角洲或寫合並成(AWS|Azure|GCP)操作。
如果你的流媒體應用程序寫入目標三角洲表和源數據是空的在某些微觀批次,它會導致寫作空文件到你的目標三角洲表。
空文件寫入一個增量表應該避免,因為他們可能會導致性能問題(例如太多的小文件,多個不必要的提交,等等)。如果有太多承諾發生在高頻率(無論是由於高頻事件的一個非常大的流入和/或由於低流觸發頻率配置),那麼它可能會導致很多小文件在目標δ表。這太多的小空文件可以增加整體上市時間,從而會阻礙後續讀取性能。
導致
空文件的寫作是一個已知的問題在運行時7.3 LTS磚。空寫創建額外的文件以及新版本在三角洲。
如果有一天1000個空寫你看到1000創建空文件隨著時間的積累。甚至一個表隻有三條記錄可以導致幾千空文件,根據頻率執行寫道。
例如,在這個示例δ提交,numOutputRows是0然而,numTargetFilesAdded是1。這意味著它增加了一個文件,即使沒有輸出行。
操作-寫{“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和包含一個解決以上問題,不再創建空文件空寫道。