Package org.apache.beam.sdk.io.kafka
Class CustomTimestampPolicyWithLimitedDelay<K,V>
- java.lang.Object
-
- org.apache.beam.sdk.io.kafka.TimestampPolicy<K,V>
-
- org.apache.beam.sdk.io.kafka.CustomTimestampPolicyWithLimitedDelay<K,V>
-
public class CustomTimestampPolicyWithLimitedDelay<K,V> extends TimestampPolicy<K,V>
A policy for custom record timestamps where timestamps within a partition are expected to be roughly monotonically increasing with a cap on out of order event delays (say 1 minute). The watermark at any time is '(Min(now(), Max(event timestamp so far)) - max delay)'. However, watermark is never set in future and capped to 'now - max delay'. In addition, watermark advanced to 'now - max delay' when a partition is idle.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.beam.sdk.io.kafka.TimestampPolicy
TimestampPolicy.PartitionContext
-
-
Constructor Summary
Constructors Constructor Description CustomTimestampPolicyWithLimitedDelay(org.apache.beam.sdk.transforms.SerializableFunction<KafkaRecord<K,V>,org.joda.time.Instant> timestampFunction, org.joda.time.Duration maxDelay, java.util.Optional<org.joda.time.Instant> previousWatermark)A policy for custom record timestamps where timestamps are expected to be roughly monotonically increasing with out of order event delays less thanmaxDelay.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.joda.time.InstantgetTimestampForRecord(TimestampPolicy.PartitionContext ctx, KafkaRecord<K,V> record)Returns record timestamp (aka event time).org.joda.time.InstantgetWatermark(TimestampPolicy.PartitionContext ctx)Returns watermark for the partition.
-
-
-
Constructor Detail
-
CustomTimestampPolicyWithLimitedDelay
public CustomTimestampPolicyWithLimitedDelay(org.apache.beam.sdk.transforms.SerializableFunction<KafkaRecord<K,V>,org.joda.time.Instant> timestampFunction, org.joda.time.Duration maxDelay, java.util.Optional<org.joda.time.Instant> previousWatermark)
A policy for custom record timestamps where timestamps are expected to be roughly monotonically increasing with out of order event delays less thanmaxDelay. The watermark at any time isMin(now(), max_event_timestamp) - maxDelay.- Parameters:
timestampFunction- A function to extract timestamp from the recordmaxDelay- For any record in the Kafka partition, the timestamp of any subsequent record is expected to be aftercurrent record timestamp - maxDelay.previousWatermark- Latest check-pointed watermark, seeTimestampPolicyFactory.createTimestampPolicy(TopicPartition, Optional)
-
-
Method Detail
-
getTimestampForRecord
public org.joda.time.Instant getTimestampForRecord(TimestampPolicy.PartitionContext ctx, KafkaRecord<K,V> record)
Description copied from class:TimestampPolicyReturns record timestamp (aka event time). This is often based on the timestamp of the Kafka record. This is invoked for each record when it is processed in the reader.- Specified by:
getTimestampForRecordin classTimestampPolicy<K,V>
-
getWatermark
public org.joda.time.Instant getWatermark(TimestampPolicy.PartitionContext ctx)
Description copied from class:TimestampPolicyReturns watermark for the partition. It is the timestamp before or at the timestamps of all future records consumed from the partition. SeeUnboundedSource.UnboundedReader.getWatermark()for more guidance on watermarks. E.g. if the record timestamp is 'LogAppendTime', watermark would be the timestamp of the last record since 'LogAppendTime' monotonically increases within a partition.- Specified by:
getWatermarkin classTimestampPolicy<K,V>
-
-