很多团队第一次治理小文件,会加一个凌晨两点的 Spark 脚本:扫描昨天的分区,把文件合到 512 MB。刚上线时效果明显,过一阵又会遇到任务跑不完、与实时写入冲突、刚合完第二天又碎了,最后脚本变成一个没人敢停的定时黑盒。
我更愿意把 Compaction 看成表的持续维护服务。它不是“每天执行一次重写”,而是一条有输入指标、候选选择、预算、提交证据和效果验收的控制循环。表什么时候需要整理、整理哪部分、允许花多少资源、失败后如何继续,都应该可计算。
邓明瑞 / 纯粹
很多团队第一次治理小文件,会加一个凌晨两点的 Spark 脚本:扫描昨天的分区,把文件合到 512 MB。刚上线时效果明显,过一阵又会遇到任务跑不完、与实时写入冲突、刚合完第二天又碎了,最后脚本变成一个没人敢停的定时黑盒。
我更愿意把 Compaction 看成表的持续维护服务。它不是“每天执行一次重写”,而是一条有输入指标、候选选择、预算、提交证据和效果验收的控制循环。表什么时候需要整理、整理哪部分、允许花多少资源、失败后如何继续,都应该可计算。