Avro Tools失败预期的启动联盟。得到了VALUE_STRING

时间:2020-06-19 20:13:15

标签: avro avro-tools

我已经定义了以下avro模式( car_sales_customer.avsc)

{
  "type" : "record",
  "name" : "topLevelRecord",
  "fields" : [ {
            "name": "cust_date",
            "type": "string"
        },
        {
            "name": "customer",
            "type": {
                "type": "array",
                "items": {
                    "name": "customer",
                    "type": "record",
                    "fields": [
                        {
                            "name": "address",
                            "type": "string"
                        },
                        {
                            "name": "driverlience",
                            "type": [
                                "null",
                                "string"
                            ],
                            "default": null
                        },
                        {
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "name": "phone",
                            "type": "string"
                        }
                    ]
                }
            }
        }]
}

和我输入的json有效负载( car_sales_customer.json )如下,

{"cust_date":"2017-04-28","customer":[{"address":"SanFrancisco,CA","driverlience":"K123499989","name":"JoyceRidgely","phone":"16504378889"}]}

我正在尝试使用av​​ro工具,并使用avro模式将上述json转换为avro,

java -jar ./avro-tools-1.9.2.jar fromjson --schema-file ./car_sales_customer.avsc ./car_sales_customer.json > ./car_sales_customer.avro

执行上面的语句时出现以下错误

Exception in thread "main" org.apache.avro.AvroTypeException: Expected start-union. Got VALUE_STRING
        at org.apache.avro.io.JsonDecoder.error(JsonDecoder.java:514)
        at org.apache.avro.io.JsonDecoder.readIndex(JsonDecoder.java:433)
        at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:283)
        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:187)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)
        at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:259)
        at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:247)
        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:179)
        at org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:298)
        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:183)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)
        at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:259)
        at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:247)
        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:179)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)
        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153)
        at org.apache.avro.tool.DataFileWriteTool.run(DataFileWriteTool.java:89)
        at org.apache.avro.tool.Main.run(Main.java:66)
        at org.apache.avro.tool.Main.main(Main.java:55)

有解决错误的方法吗?

0 个答案:

没有答案