2

Flink を使用して常に Kafka トピックの最初からコンシュームするようにするにはどうすればよいですか?

Flink 1.0.2 の一部であるKafka 0.9.x コンシューマでは、オフセットを制御するのはもはや Kafka ではなく Flink のようです。

Flink は、分散チェックポイントの一部としてオフセットを内部的にスナップショットします。Kafka / ZooKeeper にコミットされたオフセットは、外部ビューの進行状況を Flink の進行状況ビューと同期させるためだけのものです。そうすれば、監視やその他のジョブは、Flink Kafka コンシューマーがトピックをどれだけ消費したかを把握できます。

これは私がどこまで到達したかですが、私の Flink プログラムは常に中断したところから開始し、構成が指示するように最初に戻ることはありません:

val props = new Properties()
props.setProperty("bootstrap.servers", "localhost:9092");
props.setProperty("group.id", "myflinkservice")
props.setProperty("auto.offset.reset", "earliest")

val incomingData = env.addSource(
  new FlinkKafkaConsumer09[IncomingDataRecord](
    "my.topic.name",
    new IncomingDataSchema,
    props
  )
)
4

2 に答える 2

0

random を指定することでこれを回避できると思いますgroup.id

val props = new Properties()
props.setProperty("bootstrap.servers", "localhost:9092");
props.setProperty("group.id", s"myflinkservice_${UUID.randomUUID}")
props.setProperty("auto.offset.reset", "smallest") // "smallest", not "earliest"

auto.offset.resetZooKeeper で使用できる初期オフセットがない場合にのみ機能します。

于 2016-05-10T01:40:59.100 に答える