【发布时间】:2019-03-06 15:07:06
【问题描述】:
我想通过 CSVRecordReader 将以下包含时间戳(以微秒为单位)的 CSV 内容通过 AvroRecordSetWriter 转换为 AvroRecord:
timestamp,value
1551784149996000,1
我正在使用以下 Avro 架构:
{
"name": "TestRecord",
"type": "record",
"fields": [
{
"name": "timestamp",
"type" :
{
"type" : "long",
"logicalType" : "timestamp-micros"
}
},
{
"name": "value",
"type": "long"
}
]
}
但 CSVRecordReader 似乎将微秒解释为毫秒,因此 AvorRecordSetWriter 的输出包含另外三个零:
1551784750036000000
时间戳字段将被假定为毫秒数 纪元(格林威治标准时间 1970 年 1 月 1 日午夜) https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-record-serialization-services-nar/1.9.0/org.apache.nifi.csv.CSVReader/index.html
如何在 NiFi 中解析微秒并使用此架构将其转换为 Avro 或 Parquet?
也许任何 NiFi RecordReader 都支持以下 Instant ISO 格式?
2019-03-01T13:12:34.567123Z
【问题讨论】:
-
有什么办法可以防止
* 1000进入getLongFromTimestamp?
标签: apache-nifi