apache-flink - Flink 保存点每次都从头开始重新启动我的一次性源(S3 和 Kinesis)
问题描述
我怎样才能设法让保存点从正确的偏移量开始?我正在使用标准 Kinesis 接收器和指向 S3 路径的连续读取器。
我正在使用一次性语义(检查点),我可以验证源的状态是否与每个保存点一起存储。
解决方案
在底层,Flink 将文件读取过程拆分为两个子任务,即目录监控和数据读取。这些子任务中的每一个都由一个单独的实体实现。... 单个监控任务的作用是扫描目录(根据watchType定期或仅扫描一次),找到要处理的文件,将它们划分为split,并将这些split分配给下游的reader。读者是那些将阅读实际数据的人。
监控功能在 中ContinuousFileMonitoringFunction
,它会将目前所监控的文件或目录的最大文件修改时间记录到快照中。CheckpointableInputFormat
并且正在读取的文件拆分的每个s 都记录了它们的偏移量。
不知道为什么这不符合您的预期,但正如@YuvalItzchakov 所提到的,当此状态恢复时会有有用的日志记录——如果您启用调试级别的日志记录更是如此。查看这些任务管理器日志可能会揭示发生了什么。
如果您遇到困难并想在切换到 kinesis 之前探索一种引导状态的替代方法,您可以使用状态处理器 API 从这些文件中的数据创建一个保存点。或者您可以使用状态处理器 API 来检查您已有的保存点中的状态。
推荐阅读
- sql - 通过从变量执行语句从存储过程中获取 SQLCODE 和 SQLSTATE
- reactjs - reactjs中使用自动完成时出错
- angular - Angular:ng-serve 忽略证书
- haskell - Haskell mapM_ 转其他格式
- php - 自定义发票上的 WooCommerce Sequential Pro 编号
- php - 未定义的变量:数据 - wp_query
- java - 错误:无法找到或加载主类 application.Main 原因:java.lang.NoClassDefFoundError: javafx/application/Application JDK 11
- python - 使用外部列表过滤具有列表作为列值的数据框并删除外部人员
- groovy - 请问如何运行包含其他 groovy 文件的 groovy 文件?
- cordova - 如何删除使用 phonegap-plugin-contentsync 下载的缓存文件?