首页 > 解决方案 > Kafka S3 Sink Connector - 如何将分区标记为完整

问题描述

我正在使用 Kafka 接收器连接器将数据从 Kafka 写入 s3。输出数据被划分为每小时桶 - year=yyyy/month=MM/day=dd/hour=hh。此数据由下游的批处理作业使用。因此,在开始下游作业之前,我需要确保在该分区的处理开始后,不会有额外的数据到达该分区。

设计这个的最佳方法是什么?如何将分区标记为完整?即一旦标记为完成,将不会向其写入任何其他数据。

编辑:我使用 RecordField 作为 timestamp.extractor。我的 kafka 消息保证按分区字段在分区内排序

标签: apache-sparkapache-kafkabatch-processinghadoop-partitioningsystem-design

解决方案


取决于您在接收器配置中使用的时间戳提取器。

您必须保证没有记录的时间戳可以早于您使用它的时间。

AFAIK,唯一可能的方法是使用 WallClock Timestamp Extractor。否则,您将使用 Kafka Record 时间戳,或每条消息中的某个时间戳。两者都可以在过去的某个事件的 Producer 端被覆盖


推荐阅读