Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 我们如何才能迫使合流的卡夫卡冲水_Amazon S3_Apache Kafka_Apache Kafka Connect_Confluent Platform - Fatal编程技术网

Amazon s3 我们如何才能迫使合流的卡夫卡冲水

Amazon s3 我们如何才能迫使合流的卡夫卡冲水,amazon-s3,apache-kafka,apache-kafka-connect,confluent-platform,Amazon S3,Apache Kafka,Apache Kafka Connect,Confluent Platform,我设置了kafka connect s3接收器,持续时间设置为1小时,并且我还设置了一个相当大的刷新计数,比如10000。现在,如果kafka通道中没有太多消息,s3接收器将尝试在内存中缓冲这些消息,并等待其累积到刷新计数,然后将它们一起上载,并将偏移提交给其自己的消费者组 但想想这种情况。如果在频道中,我只发送5000条消息。然后没有s3水槽冲洗。过了很长一段时间,5000条消息最终会因为保留时间而从卡夫卡中删除。但是这些消息仍然在s3接收器的内存中,而不是s3中。这是非常危险的,例如,如果我

我设置了kafka connect s3接收器,持续时间设置为1小时,并且我还设置了一个相当大的刷新计数,比如10000。现在,如果kafka通道中没有太多消息,s3接收器将尝试在内存中缓冲这些消息,并等待其累积到刷新计数,然后将它们一起上载,并将偏移提交给其自己的消费者组

但想想这种情况。如果在频道中,我只发送5000条消息。然后没有s3水槽冲洗。过了很长一段时间,5000条消息最终会因为保留时间而从卡夫卡中删除。但是这些消息仍然在s3接收器的内存中,而不是s3中。这是非常危险的,例如,如果我们重新启动s3接收器,或者运行s3接收器的机器崩溃。然后我们丢失了那5000条信息。我们无法从卡夫卡中再次找到它们,因为它已被删除


这会发生在s3接收器上吗?或者有一些设置强制它在某个时间后刷新?

如果从Kafka到S3的流没有恒定的记录流,您可以使用该属性

按预定的时间间隔刷新记录

请注意,如果使用此选项,在重新处理的情况下,下游系统应能够处理重复项。这是因为,如果连接器计划从Kafka重新导出记录,则根据挂钟刷新这些记录可能会导致不同文件中出现重复项

作为旁注,如果使用属性:

使用
Wallclock
时间戳提取器(
timestamp.extractor=Wallclock
),您的记录将被刷新,而无需设置
rotate.schedule.interval.ms
。但这意味着您的分区器依赖于挂钟,因此您应该能够解释重复记录

连接器能够在具有确定性分区的恒定记录流上提供精确的一次传递,并且具有各种时间戳提取器,例如依赖于记录的时间戳(
record
)或字段时间戳(
RecordField
)的时间戳提取器


分区的配置属性

查看计划的旋转ms PropertyTanks,我选中了,就是这样。谢谢,就是这样。为什么会发生这种情况:
如果连接器计划从Kafka重新导出记录。
我想每隔一段时间刷新到S3,我不知道如何避免重复记录。我在文档中发现了这一点-为了保证TimeBasedPartitioner的语义准确无误,必须将连接器配置为使用TimestampExtractor的确定性实现和确定性旋转策略。确定性旋转策略配置为rotate.interval.ms(设置rotate.schedule.interval.ms是不确定的,将在一次保证中完全失效)。