☰
Spark 小文件治理实战:从成因量化到合并策略与效果验证
2026/10/31 7:00:39 网站建设 项目流程

一、原理剖析

1.1 小文件不是"自然长成"的,是写出来的

很多团队把小文件当成一个玄学问题,出了问题就怪"HDFS 不行"“Spark 不行”。我当年也这么想过,直到我们把一张表的写入链路从头到尾埋点统计了一遍,才发现小文件的数量是可以精确算出来的,而且误差在 5% 以内。

核心公式其实很简单:

单批次落地文件数 ≈ 写入任务的最终并行 task 数 × 目标分区数

这个公式我后面会反复用到。它告诉我们一件事:只要你能控制"task 数"和"分区数"两个变量,你就能预测文件数。反过来,小文件失控,一定是这两个变量里至少有一个失控了。下面我把三个最常见的失控来源一个一个拆开,每个都给实测。

1.1.1 任务并行度:被忽略的第一个乘数

我们最初定位问题,是从一个最不起眼的 Spark 作业开始的。这个作业读一张 40G 的维表,做一点清洗后原样写回 ODS。配置是这样的:

spark.sql.shuffle.partitions:200spark.sql.files.maxPartitionBytes

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询