我正在尝试构建一个管道,将avro数据写入postgres数据库。对于简单的模式和值的avroconverter,一切都可以正常工作。但是,我希望将嵌套字段写入jsonb列。这有几个问题。首先,connect插件似乎不支持struct数据。其次,插件不能直接写入jsonb列。
第二个问题应该通过添加一个cast-in-pg来避免,如本期所述。第一个问题是证明更困难。我尝试过不同的转换,但未能让connect插件将一个复杂字段解释为字符串。有问题的模式看起来是这样的(实际上,除了时间戳之外,第一级上还有更多字段):
{
"namespace": "test.schema",
"name": "nested_message",
"type": "record",
"fields": [
{
"name": "timestamp",
"type": "long"
},
{
"name": "nested_field",
"type": {
"name": "nested_field_record",
"type": "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列中,我想将整个字段解释为一个字符串。这可能吗?我尝试过cast转换,但它只支持prmitive avro类型。一些类似于Highfield的方法可以奏效,但我不认为有什么方法可以将其局限于一个领域。如有任何意见或建议,我们将不胜感激。
一种完全不同的方法是使用两个connect插件并向上插入到表中。一个插件将avroconverter用于除嵌套字段外的所有字段,而第二个插件将stringconverter用于嵌套字段。不过,这感觉在各方面都不对。
暂无答案!
目前还没有任何答案,快来回答吧!