Spark Structured Streaming Checkpoint中sources目录下‘0’文件夹的作用与生成逻辑
Spark Structured Streaming Checkpoint 中
sources 目录下数字文件夹解析 0 文件夹的作用
sources 目录下的 0 文件夹,是流作业中第一个数据源的专属状态跟踪目录。它内部以 batch_id 命名的文件(如 0、1、2),存储了对应批次里该数据源的已处理数据偏移量、消费进度等关键元数据。Spark 依赖这些信息实现 Exactly-Once 语义,重启作业时能精准从上次中断的位置继续处理,避免重复消费或数据丢失。
何时生成 1 文件夹?
当流作业接入第二个独立数据源时(比如用 join 关联两个不同流、或用 union 合并两个流),Spark 会自动在 sources 目录下创建 1 文件夹,专门跟踪第二个数据源的批次处理状态。
背后的设计意义
这种按数据源索引命名的目录结构,核心是为了适配多数据源流处理场景:
- 每个数据源的处理进度独立存储,互不干扰,确保多流协作时各自的 Exactly-Once 语义不受影响;
- 作业恢复时,Spark 可分别加载每个数据源的历史状态,精准还原整个流作业的运行上下文;
- 清晰区分不同数据源的状态数据,方便排查单数据源的消费进度异常问题。
内容的提问来源于 stack exchange,提问作者 Praveen Kumar B N
相关产品推荐
相关产品推荐

