将avro字段写入pg jsonb

jfewjypa  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(242)

我正在尝试构建一个管道,将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用于嵌套字段。不过,这感觉在各方面都不对。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题