Java 是否可以在Avro中使用复杂对象类型作为贴图中的关键点?

Java 是否可以在Avro中使用复杂对象类型作为贴图中的关键点?,java,serialization,avro,Java,Serialization,Avro,是否可以使用非字符串作为Avro地图中的键 我发现了这个问题,它声称添加了非字符串键支持,但我找不到任何示例,也无法从补丁中了解新支持如何与模式一起工作 我想这样做: "name": "aThing", "type": "record", "fields": [ { "name": "aMapOfThings", "type": { "type": "map", "keys": "MyKeyType", "values": "My

是否可以使用非字符串作为Avro地图中的键

我发现了这个问题,它声称添加了非字符串键支持,但我找不到任何示例,也无法从补丁中了解新支持如何与模式一起工作

我想这样做:

    "name": "aThing",
    "type": "record",
    "fields": [
        { "name": "aMapOfThings", "type": {
             "type": "map", "keys": "MyKeyType", "values": "MyValueType"
           }
        }
    ]
或者在
avdl
中:

  record aThing {
    map<MyKeyType, MyValueType> aMapOfThings = [:];
  }
recordathing{
地图aMapOfThings=[:];
}

与protobuf的问题一模一样:

查看PR,似乎此增强功能实际上并不是设计用于
SpecificRecord
。代码更改和测试的重点似乎是
genericord
,以及通过反射从包含非字符串键映射的Java类派生模式信息

下面是一个从POJO派生的模式示例,其中映射包含非字符串键(从)。请注意,它是一个记录数组,而不是
映射
类型:

{
  "type" : "record",
  "name" : "Company",
  "namespace" : "org.apache.avro.reflect",
  "fields" : [ {
    "name" : "employees",
    "type" : [ "null", {
      "type" : "array",
      "items" : {
        "type" : "record",
        "name" : "Pair487429dd20c65898",
        "fields" : [ {
          "name" : "key",
          "type" : {
            "type" : "record",
            "name" : "EmployeeId",
            "fields" : [ {
              "name" : "id",
              "type" : [ "null", "int" ],
              "default" : null
            } ]
          }
        }, {
          "name" : "value",
          "type" : {
            "type" : "record",
            "name" : "EmployeeInfo",
            "fields" : [ {
              "name" : "name",
              "type" : [ "null", "string" ],
              "default" : null
            } ]
          }
        } ]
      },
      "java-class" : "java.util.HashMap"
    } ],
    "default" : null
  } ]
}

你找到解决办法了吗?我对此也很感兴趣,关于AVRO-680的评论也不是很。。。清除…不,抱歉,仍然使用气味字符串。。。