gpt4 book ai didi

postgresql - Kafka Connect - JSON 转换器 - JDBC 接收器连接器 - 列类型 JSON

转载 作者:行者123 更新时间:2023-12-05 06:28:28 26 4
gpt4 key购买 nike

用例是将整个消息(JSON 格式)和键作为记录存储在表中,表中有两列“id”和“data”。

数据库为Postgres,支持JSON格式的列。

根据这篇文章,JSONConverter 支持的类型有 string、int64 等 https://cwiki.apache.org/confluence/display/KAFKA/KIP-301%3A+Schema+Inferencing+for+JsonConverter

是否可以将数据字段类型设置为 JSON,然后可以使用 JSON 类型的列存储在 Postgres DB 中。

schema = `{
"type":"struct",
"fields":[
{"type":"string", "optional": false, "field":"id"},
{"type":"string", "optional": false, "field":"data"}
]}`

示例数据负载是

"payload": { "id": 10000, "data": {"hello":"world"} }

以上将数据存储为文本,并期望列在 Postgres 中为文本类型。如果 Postgres 上的列是 JSON 类型,那么 JDBC 接收器连接器将抛出错误。

在 Postgres 上使用 JSON 类型将有助于在 JSON 字段等上创建索引。是否可以适本地使用 JSONConverter 和 JDBC Sink Converter 来存储列类型为 JSON 的记录。

最佳答案

使用 value.converter.schema.enable=true,并像这样发送 JSON 数据(将架构作为每条消息的一部分,并更新 payload 部分实际的消息数据),它应该与 JDBC Sink 一起工作。

{
"schema": {
"type": "struct",
"fields": [{
"type": "int32",
"optional": false,
"field": "id"
}, {
"type": "struct",
"name": "data",
"optional": false,
"fields": [{
"type": "string",
"name": "hello",
"optional":false
}]
}],
"optional": false,
"name": "foobar"
},
"payload": {
"id": 10000,
"data": {"hello":"world"}
}
}

请注意,字段 > 名称条目映射到有效负载对象中的键,即您的列名

或者您可以考虑将您的客户端转换为使用 Avro,并为您自己节省一些网络带宽。

关于postgresql - Kafka Connect - JSON 转换器 - JDBC 接收器连接器 - 列类型 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54302931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com