问题
Delta写出可生成空文件,如果源为空可用正规Delta写或市场化高山市AWS系统|休眠|GCP运维
流程序写目标三角洲表 源数据在某些微批量上为空 可能导致空文件写入目标三角洲表
避免向Delta表写空文件,因为它们可能引起性能问题(ex.太多小文件、多免责任等)如果发生高频承诺过多(或因高频事件大量流出和/或因低流触发频率配置),则可能导致目标三角盘表多出小文件太多小空文件可增加总列表时间,从而可能妨碍后续阅读性能
因果
写空文件在Databricks运行7.3LTS中已知问题空写创建附加文件以及Delta新版本
万万空写文件 可见千空文件生成 并随时间积存连表只有3个记录都可能导致几千个空文件,视写作频率如何实现而定。
举个例子,在这个Delta采样中NumExputRows华府市0,然而numTargetFilesAdded华府市一号.表示它添加了一个文件, 即便没有输出行 。
Operation - Write {"numFiles":"1","numOutputBytes":"2675","numOutputRows":"0"} OperationParameters{"mode":"Append","partitionBy":"[]"} Operation - Merge {"numOutputRows":"0","numSourceRows":"0","numTargetFilesAdded":"1","numTargetFilesRemoved":"0","numTargetRowsCopied":"0","numTargetRowsDeleted":"0","numTargetRowsInserted":"0","numTargetRowsUpdated":"0"}
求解
数据库升级为Databricks运行911LTS或以上
Databricks运行时间9.1LTS以上包含问题修复并不再为空写创建空文件