私はカフカのトピックに使用するavroスキーマについてもっと学びたいと思っています。これは比較的新しいものです。私は、特定の状況でスキーマを進化させる方法があるのだろうかと思っていました。スキーマを更新するには、新しいフィールドをnullやデフォルト値にすることはできません。このための作業は新しいトピックを作成することですが、既存のスキーマを進化させるためのよりよい方法があります。ありがとう。スキーマの古いバージョンを待つクライアントが読むことができる新しいバージョン - Backward
: - Forward
:Kafka Avroスキーマの進化
1
A
答えて
1
は、トピックの四つの可能な互換性がありますスキーマの新しいバージョンを待つクライアントは、古いバージョンを読み取ることができます 上記の両方 - None
:Both
-
上記のいずれもが、いくつかのプロデューサーは、古いデータと新しいデータが生成されます、そして消費者が新しいか古いデータを除く外になるいくつかの時間があることを考慮していません。
お客様のケースでクライアントの行動はどのようになりますか?フィールドを追加することが常に前方互換性があり
- (古いクライアントはちょうど新しいフィールドをドロップします)
- あなたがデフォルト値
を指定する場合にのみ、下位互換性があります場合にも、これが唯一の真実でありますデータを特定のスキーマ(対応するPOCOなど)に変換することを計画しています.jsonに変換してカスタム処理を行う場合は、両方のスキーマを新しいクライアントプロセスにすることができます。私は同じトピックにwrteするため
だから、2つのpossibe方法:
- デフォルト値を設定します。あなたは
(アブロスペックを引用)(オプション)このフィールド が不足しているインスタンスを読み込むときに使用されるこのフィールドのデフォルト値は、デフォルト値を誤解、それはデフォルト値が書き込まれます意味しないかもしれませんが、例えば
、あなたが行っていることとして、あなたは以前に、あなたは「NC」(または空)など セット「姓」のデフォルトができ、「名前」を持っていたし、「姓」を追加したい場合データベース。あなたのスキーマを更新することができるように
- あなたは(デフォルトではと、comptibiliatyが
backward
である)、none
(またはforward
)へのあなたの互換性のデフォルトを設定します。この場合、新しいスキーマを待つクライアントは古いデータを処理できません。しかし、新しいデータだけが到着するように、互換性を変更し、すべてのプロデューサを更新してから、クライアントが新しいスキーマを待っている場合は、互換性を元に戻すか、新しいフィールドがnullにすることはできません、あなたが含まれていないすべての古いレコードをしたいと思うものを、デフォルト値を持つことができない場合は
をしたい私はオプション1
関連する問題
- 1. Avroスキーマを集中化したApache Kafka
- 2. Avro with Kafka - スキーマの変更による逆シリアル化
- 3. 埋め込みスキーマを持つKafkaからAvroを逆シリアル化する方法
- 4. Reactive KafkaをConfluent Schema Registryと連携させるAvroスキーマ
- 5. Kafka Streamsがスキーマなしでavroトピックを作成する
- 6. スキーマのないダンプAvroバイト
- 7. Kafka Avroコンシューマ(デコーダー付)
- 8. confluent-kafka python avro messages
- 9. spring-cloud-stream kafka avro
- 10. ハイブとスキーマの進化
- 11. kafkaのavroエンコードメッセージ内のprotobuf
- 12. Avroシリアライザとデシリアライザkafka java api
- 13. 春の雲kafkaとavroのシリアル化の問題
- 14. avroスキーマのオプション配列
- 15. avroスキーマを知らなくても、Avroエンコードされたkafkaメッセージをスカラーで読む方法は?
- 16. PythonでKafka Avro文字列をデコード/逆シリアル化する方法
- 17. Microsoft Bondスキーマの進化のベストプラクティス
- 18. SQL Serverスキーマの進化(移行)
- 19. kafka-avro-console-producerのインストール方法は?
- 20. コンフルエントなKafka AvroデシリアライザのJAVAバージョンエラー
- 21. Avro逆シリアル化エラー - ArrayIndexOutOfBoundsException
- 22. Python - スキーマレスApache Avroデータのシリアル化
- 23. confluent-kafka avro with pipをインストールする
- 24. Kafka Consumer for Spark for Kafka API 0.10:カスタムAVROデシリアライザ
- 25. HDFSでのAvroスキーマの生成
- 26. データファイルからのAvroスキーマの解析
- 27. Avro:デシリアライズjson - オプションのフィールドを持つスキーマ
- 28. 避ける方法Avroスキーマ内のマップマップマップ
- 29. Apache Avroスキーマのリストまたはコレクション
- 30. スキーマを使用したAvroメッセージ
となるだろう –
そうですが、新しいトピックを作成せずにこのような状況に取り組むための作業があれば、私は不思議でした。 –