0

Kafka のトピックからデータを読み取る Flink ストリーミング プログラムがあります。プログラムでは、auto.offset.reset が「最小」に設定されています。IDE/Intellij-IDEA でテストすると、プログラムは常にトピックの先頭からデータを読み取ることができました。次に、flink/kafka クラスターをセットアップし、いくつかのデータを kafka トピックに生成しました。初めてストリーミング ジョブを実行すると、トピックの先頭からデータを読み取ることができました。しかし、その後、ストリーミング ジョブを停止して再度実行すると、トピックの最初からデータが読み取られません。プログラムが常にトピックの先頭からデータを読み取るようにするにはどうすればよいですか?

    Properties properties = new Properties();
    properties.put("bootstrap.servers", kafkaServers);
    properties.put("zookeeper.connect", zkConStr);
    properties.put("group.id", group);
    properties.put("topic", topics);
    properties.put("auto.offset.reset", offset);

    DataStream<String> stream = env
            .addSource(new FlinkKafkaConsumer082<String>(topics, new SimpleStringSchema(), properties));
4

1 に答える 1

0

常に最初から読み取りたい場合は、ストリーム コンテキストでチェックポイントを無効にする必要があります。

また、コンシューマー プロパティのレベルで無効にします。

enable.auto.commit=false または auto.commit.enable=false (kafka のバージョンによって異なります)

別の方法: フェイルオーバーのためにチェックポイントを保持し続けますが、最初から読み取る必要がある場合は新しい group.id を生成できます (ときどき Zookeeper をクリーンアップするだけです)。

于 2015-12-15T11:25:42.820 に答える