apache-spark - Kafka S3 Sink Connector - 如何将分区标记为完整
问题描述
我正在使用 Kafka 接收器连接器将数据从 Kafka 写入 s3。输出数据被划分为每小时桶 - year=yyyy/month=MM/day=dd/hour=hh
。此数据由下游的批处理作业使用。因此,在开始下游作业之前,我需要确保在该分区的处理开始后,不会有额外的数据到达该分区。
设计这个的最佳方法是什么?如何将分区标记为完整?即一旦标记为完成,将不会向其写入任何其他数据。
编辑:我使用 RecordField 作为 timestamp.extractor。我的 kafka 消息保证按分区字段在分区内排序
解决方案
取决于您在接收器配置中使用的时间戳提取器。
您必须保证没有记录的时间戳可以早于您使用它的时间。
AFAIK,唯一可能的方法是使用 WallClock Timestamp Extractor。否则,您将使用 Kafka Record 时间戳,或每条消息中的某个时间戳。两者都可以在过去的某个事件的 Producer 端被覆盖
推荐阅读
- reactjs - 使用多个复选框过滤器做出反应
- python - 将十六进制编码为十进制会出错 - 如何修复?
- python - 在新的 Apple Silicon 架构上运行 Ruby、Node、Python 和 Docker?
- android - React-Native NFC 阅读器返回:不支持 NFC 标签的类型
- php - 停止 WP_Query->get_posts 在类别页面上运行
- oop - 将 API 响应转换为可为空的字符串
- c++ - 将 C++ 编译器从 Ubuntu 更改为 MacOS
- r - R Shiny Flexdashboard 有时无法在本地加载?
- lua - 如何使用(类似于)__index 扩展 lua 元表
- sql - 以 x 行的批次将表/视图导出到 .csv