为时间戳记录创建适当的avro架构

时间:2018-01-26 17:18:01

标签: json avro apache-nifi data-conversion

我想知道这种格式的json到avro转换的正确avro架构是什么:

{"entryDate": "2018-01-26T12:00:40.930"}

我的架构:

{
    "type" : "record",
    "name" : "schema",
    "fields" : [{
        "name" : "entryDate",
        "type" : ["null", {
            "type" : "long",
            "logicalType" : "timestamp-micros"
        }],
        "default" : null
    }]
}

我一直在

`'Cannot convert field entryDate: Cannot resolve union: 
"2018-01-26T12:00:40.930" 
not in 
["null",{"type":"long","logicalType":"timestamp-millis"}]'`

1 个答案:

答案 0 :(得分:5)

这是一个愚蠢的错误......显然我将时间戳值存储为字符串,因此avro架构需要一个字符串而不是long类型。

{
    "type" : "record",
    "name" : "schema",
    "fields" : [{
        "name" : "entryDate",
        "type" : ["null", {
            "type" : `**"long"**`,
            "logicalType" : "timestamp-micros"
        }],
        "default" : null
    }]
}

应该是

{
    "type" : "record",
    "name" : "schema",
    "fields" : [{
        "name" : "entryDate",
        "type" : ["null", {
            "type" : `**"string"**`,
            "logicalType" : "timestamp-micros"
        }],
        "default" : null
    }]
}

卫生署!