Confluent Kafka Connectを使用して単純なオブジェクトをdbに挿入することができます。このサポートを複雑なjson/schema構造にする方法が不明です。この機能が使用可能かどうかはわかりません。同様の質問hereが約1年前に尋ねられましたが、今までは答えられていません。助けてください。複雑なまたは入れ子になったjson /スキーマはコンフルエントなKafka Connectでサポートされています
答えて
Kafka Connectは、Struct
,Map
、およびArray
を含む複雑な構造をサポートしています。シンクコネクタには値が渡され、単にシンクコネクタを使用する必要があるため、一般にソースコネクタのみがこれを行う必要があります。 This documentationは、Struct
を記述するSchema
オブジェクトを構築し、そのスキーマに準拠するStruct
インスタンスを作成するための基本を記述しています。この場合、構造体の例はフラットな構造に過ぎません。
ただし、別のSchema
インスタンスで定義されたタイプStruct
のフィールドを簡単に追加できます。実際に、それはちょうどあなたの構造体には複数のレベルにこの単純なパターンを重ねています:SchemaBuilder
は流暢なAPIがある
Schema addressSchema = SchemaBuilder.struct().name(ADDRESS)
.field("number", Schema.INT16_SCHEMA)
.field("street", Schema.STRING_SCHEMA)
.field("city", Schema.STRING_SCHEMA)
.build();
Schema personSchema = SchemaBuilder.struct().name(NAME)
.field("name", Schema.STRING_SCHEMA)
.field("age", Schema.INT8_SCHEMA)
.field("admin", new SchemaBuilder.boolean().defaultValue(false).build())
.field("address", addressSchema)
.build();
Struct addressStruct = new Struct(addressSchema)
.put("number", 100)
.put("street", "Main Street")
.put("city", "Springfield")
.build();
Struct personStruct = new Struct(personSchema)
.put("name", "Barbara Liskov")
.put("age", 75)
.put("address", addressStruct)
.build();
ので、あなたは実際にはカスタムadmin
ブールスキーマビルダーのようにそれを埋め込むことができます。しかし、それはaddressStruct
を作成するためにSchema
を参照する必要があるため、少し難しくなります。
一般に、ソースコネクタを書き込むときにこれを行う方法を心配する必要があります。 に既存のソースコネクタを使用しようとすると、キーと値の構造をほとんど制御できません。たとえば、Confluent's JDBC source connectorは、別々のSchema
とそのテーブルの各行を別々のStruct
(そのスキーマを使用する)として各テーブルをモデリングしています。しかし、行はフラットなので、Schema
とStruct
にはプリミティブ型のフィールドしか含まれません。 MySQLとPostgreSQLため
Debezium's CDCコネクタもSchema
とリレーショナルテーブルをモデル化し、行ごとStruct
オブジェクトに対応するが、CDCは、前および/または変更後の行の状態として行に関する詳細情報を取り込みます。したがって、これらのコネクタは、ネストされたStruct
オブジェクトを含むテーブルごとにa more complex Schema
を使用します。
各ソースコネクタは独自のメッセージ構造を持っていますが、Kafka ConnectのSingle Message Transforms (SMTs)は、フィルタリング、名前変更、およびソースコネクタによって生成されたメッセージをKafkaに書き込む前に、 、またはシンクコネクタに送信される前にKafkaから読み取られたメッセージに適用されます。
- 1. コンフルエントなkafka connectを使用するETL
- 2. xmldocumentと入れ子になったスキーマ
- 3. Rails - 複雑なパラメータを持つ入れ子になったフォーム
- 4. 複雑で入れ子になったjsonデータを読む方法
- 5. は入れ子になったJSONにアクセスできません
- 6. 入れ子になったJSONでsetState
- 7. Pythonを使ってRedisに複雑な入れ子になったJSONを格納する方法
- 8. Pythonで複雑な入れ子になったjsonを正規化する方法は?
- 9. Apache-Kafka-ConnectのコンフルエントHDFSコネクタ、不明なマジックバイト、Kafka-To-Hdfs
- 10. ビバード合成:複雑な代入はサポートされていません
- 11. コンフルエントなスキーマレジストリにネストされたavroスキーマを持たせるには?
- 12. 入れ子になったPromise.map()は結果を返さない
- 13. Androidで入れ子になったjsonオブジェクトと複数のjsonオブジェクトで入れ子になったjson配列を持つjsonから文字列を取得
- 14. 入れ子になったJSONデータがVaadinグリッドに表示されます
- 15. ログスタッシュの入れ子になったjsonを解析します
- 16. 入れ子になったjsonデータを作成するには?
- 17. 入れ子になったインスタンス値の入れ子になったネストされた記述子
- 18. rapidjsonを使って入れ子になったJsonを読む
- 19. 入れ子になった$ .getJSONは()コルドバ
- 20. 複雑な入れ子になったjsonをjqueryオートコンプリート形式にマップするにはどうすればいいですか?
- 21. コアは入れ子になったループでOpenMPで分割されますか?
- 22. 何を使用すればいいですか:Kafka StreamまたはKafka consumer APIまたはKafka connect
- 23. 奇妙に入れ子になったループの時間複雑度
- 24. Pythonで入れ子になったJSONデータにアクセスする
- 25. ERROR:サポートされていない、または配置されていない式
- 26. JSON配列内に入れ子になったJSONオブジェクト
- 27. 入れ子になったクラスでインポートされたパッケージを使用できないのはなぜですか?
- 28. C#でネストされた複雑なJSONレスポンスを解析する
- 29. JSONは入れ子になった配列をデコードしますPHPループ
- 30. mongodbの入れ子になったスキーマを更新するには?