Packages

c

com.adform.streamloader.sink

RewindingPartitionGroupSinker

abstract class RewindingPartitionGroupSinker extends WrappedPartitionGroupSinker with Logging

A wrapper sinker that rewinds the streams back by a given interval during initialization. Can be used to implement stateful sinks that need to "warm-up" before starting actual writing, e.g. in order to implement record de-duplication one can rewind the streams in order to build-up a cache. Implementers need to override the method for "touching" rewound records, once the sinker catches up all new records are simply passed down to the base sinker.

Rewinding by an offset range is straightforward as we simply subtract, a caveat here is that we can't determine the rewound watermark, so we retain it. Rewinding by watermark is done by calling offsetForTimes in Kafka, which can in principle return a result that is not exactly consistent with the watermark calculated by the stream loader. Either way the rewinding should be considered to be done on a best-effort basis.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. RewindingPartitionGroupSinker
  2. Logging
  3. WrappedPartitionGroupSinker
  4. PartitionGroupSinker
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new RewindingPartitionGroupSinker(baseSinker: PartitionGroupSinker, rewindInterval: StreamInterval)

    baseSinker

    A base sinker to wrap.

    rewindInterval

    A stream interval to rewind backwards.

Abstract Value Members

  1. abstract def touchRewoundRecord(record: StreamRecord): Unit

    Process a given stream record that is already written by the base sink, but is now rewound back during initialization for warm-up.

    Process a given stream record that is already written by the base sink, but is now rewound back during initialization for warm-up.

    record

    Stream record to "touch".

    Attributes
    protected

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. def close(): Unit

    Cleans up and closes the sinker.

    Cleans up and closes the sinker.

    Definition Classes
    WrappedPartitionGroupSinkerPartitionGroupSinker
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. val groupName: String

    Name of the partition group, can be used in metrics and logs to differentiate between group sinkers.

    Name of the partition group, can be used in metrics and logs to differentiate between group sinkers.

    Definition Classes
    WrappedPartitionGroupSinkerPartitionGroupSinker
  11. val groupPartitions: Set[TopicPartition]

    The Kafka topic partitions that this sinker is responsible for.

    The Kafka topic partitions that this sinker is responsible for.

    Definition Classes
    WrappedPartitionGroupSinkerPartitionGroupSinker
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. def heartbeat(): Unit

    Notifies the sinker that record consumption is still active.

    Notifies the sinker that record consumption is still active. Gives the sinker an opportunity to perform flushing with very low traffic streams.

    Definition Classes
    WrappedPartitionGroupSinkerPartitionGroupSinker
  14. def initialize(kafkaContext: KafkaContext): Map[TopicPartition, Option[StreamPosition]]

    Initializes the sinker and returns the stream positions where topic partitions should be reset to before loading.

    Initializes the sinker and returns the stream positions where topic partitions should be reset to before loading. Should be called once before any subsequent calls to write. This is most likely a blocking call since it queries Kafka/storage for offsets.

    kafkaContext

    Kafka context to use when looking up / committing offsets to Kafka, if needed.

    returns

    The initial loader positions in the owned topic partitions. If no position is returned the position will not be reset explicitly, meaning that the consumer will either reset it to the earliest/latest based on the configuration value of auto.offset.reset, or will reset to the offset stored in Kafka, if any.

    Definition Classes
    RewindingPartitionGroupSinkerWrappedPartitionGroupSinkerPartitionGroupSinker
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. val log: Logger
    Attributes
    protected
    Definition Classes
    Logging
  17. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  20. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  21. def toString(): String
    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  23. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  24. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  25. def write(record: StreamRecord): Unit

    Checks whether the given record is a "rewound" record, i.e.

    Checks whether the given record is a "rewound" record, i.e. is already committed by the base sink and if so only "touches" it, otherwise passes it further down to the base sink.

    Definition Classes
    RewindingPartitionGroupSinkerWrappedPartitionGroupSinkerPartitionGroupSinker

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from Logging

Inherited from PartitionGroupSinker

Inherited from AnyRef

Inherited from Any

Ungrouped