web-dev-qa-db-ja.com

タイムスタンプレコードの適切なavroスキーマの作成

この形式の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"}]'`
8
koala421

それはばかげた間違いでした...明らかにタイムスタンプ値を文字列として保存していたので、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
    }]
}

どー!

9
koala421