0

如果 Spark Streaming 作业涉及 shuffle 和有状态处理,那么每个微批次很容易生成大量小文件。我们应该在不影响延迟的情况下减少文件数量。

4

1 回答 1

0

如果使用所有默认配置,一个 Spark Streaming 微批处理将生成 80 k 文件。这将导致 hdfs 的高 qps 和延迟。更好地更改以下配置以减少检查点文件。

配置 默认 建议
spark.sql.streaming.minBatchesToRetain 100 30
spark.sql.streaming.stateStore.minDeltasForSnapshot 10 5
spark.sql.shuffle.partitions 200 取决于微批量大小,50 或 100

所以,文件总数=minBatchesToRetain * 4 (left 2 + right 2) * partitions * operators(each join or aggregation)

如果所有配置都是默认的,它将是100 * 4 * 200 * 1 = 80 K

于 2022-02-08T01:12:37.280 回答