如何解决Kafka Connect JDBC接收器-将Avro字段写入PG JSONB
我正在尝试建立将Avro数据写入Postgres DB的管道。一切都可以通过简单的模式和AvroConverter的值正常运行。但是,我想将嵌套字段写入JSONB列。这有两个问题。首先,似乎Connect插件不支持STRUCT数据。其次,该插件无法直接写入JSONB列。
应该通过在PG中添加强制转换来避免第二个问题,如this issue中所述。第一个问题被证明比较困难。我尝试使用不同的transformations,但无法获得Connect插件来将一个复杂字段解释为字符串。问题中的模式看起来像这样(实际上,除了时间戳,第一层上还会有更多字段):
{
"namespace": "test.schema","name": "nested_message","type": "record","fields": [
{
"name": "timestamp","type": "long"
},{
"name": "nested_field","type": {
"name": "nested_field_record","fields": [
{
"name": "name","type": "string"
},{
"name": "prop","type": "float","doc": "Some property"
}
]
}
}
]
}
消息在Kafka中写为
{"timestamp":1599493668741396400,"nested_field":{"name":"myname","prop":377.93887}}
为了将nested_field
的内容写到单个DB列中,我想将此 entire 字段解释为一个字符串。这可能吗?我已经尝试过cast转换,但这仅支持伪Avro类型。类似于HoistField的方法可以起作用,但是我看不出将其限制为单个字段的方法。任何想法或建议,将不胜感激。
一种完全不同的方法是在表中使用两个connect插件和UPSERT。一个插件将对所有字段使用AvroConverter来保存嵌套的一个,而第二个插件将StringConverter用于嵌套字段。但是,这在各种方面都是错误的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。