首页 > 解决方案 > 如何使 avro union 多种类型只显示一种类型(一种不为空)

问题描述

我有以下 avro 架构

{
  "type" : "record",
  "namespace" : "com.test.avro",
  "name" : "MultiTypeObject",
  "fields" : [
    {
      "name" : "id",
      "type" : "int"
    },
    {
      "name" : "value",
      "type" : ["null", "double", "int", "boolean"],
      "default" : null
    }
  ]
}

但是,当我使用 AvroParquet 将数据写入 S3 并以 Json 格式查询时,我得到了这个

"myObject": {
  "id": 1,
  "value": {
    "member2": null,
    "member0": 24.439999999999998,
    "member1": null
  }
}

问题是我怎样才能让这个值字段只有一个值被打印出来,如下所示?

"myObject": {
  "id": 1,
  "value": 24.439999999999998
}

非常感谢。

标签: javaamazon-s3avroparquet

解决方案


至少目前没有任何方法可以合并它们,这就是 avro 对联合数据类型的工作方式。


推荐阅读