【发布时间】:2020-06-23 07:33:37
【问题描述】:
以下是我创建的用于从 DB 获取数据并调用 Web 服务的流程。
QueryDatabaseTableRecord --> SplitAvro --> ConvertAvroToJson --> EvaluateJsonPath --> ReplaceText --> InvokeHTTP
在转换 AvroToJson 时,日期列被解释为整数值。
在将 Avro 转换为 Json 时,有什么方法可以保留数据类型吗?
我尝试过的 Avro 架构:
{
"type" : "myschema",
"namespace" : "nifi",
"name" : "result",
"fields" : [
{ "name" : "ID" , "type" : "string" },
{ "name" : "IDEXT" , "type" : "string" },
{ "name" : "Copany" , "type" : "string" },
{ "name" : "Title" , "type" : "string" },
{ "name" : "Name" , "type" : "string" },
{ "name" : "Name1" , "type" : "string" },
{ "name" : "Name2" , "type" : "string" },
{ "name" : "Name3" , "type" : "string" },
{ "name" : "Name4" , "type" : "string" },
{ "name" : "Alais" , "type" : "string" },
{ "name" : "Legacyid" , "type" : "string" },
{ "name" : "Language" , "type" : "string" },
{ "name" : "Searchterm1" , "type" : "string" },
{ "name" : "Searchterm2" , "type" : "string" },
{ "name" : "Effectivedate" , "type" : "timestamp" },
{ "name" : "Recon_account" , "type" : "string" },
{ "name" : "SortKey" , "type" : "string" },
{ "name" : "CashMgmtGroup" , "type" : "string" },
{ "name" : "ValueAdjust" , "type" : "string" },
{ "name" : "LegalStatus" , "type" : "string" },
{ "name" : "Attr1" , "type" : "string" },
{ "name" : "Attr2" , "type" : "string" },
{ "name" : "Comments" , "type" : "string" },
{ "name" : "Vendor" , "type" : "string" },
{ "name" : "Authorization" , "type" : "string" },
{ "name" : "TradingPartner" , "type" : "string" },
{ "name" : "CheckDigit" , "type" : "string" },
{ "name" : "Industry" , "type" : "string" },
{ "name" : "TrainStation" , "type" : "string" },
{ "name" : "Contains" , "type" : "string" },
{ "name" : "RepublishFuncion" , "type" : "string" }
]
}
【问题讨论】:
-
请使用您在 ConvertAvroToJson 中使用的 avro 架构编辑帖子
-
我最初没有使用任何 Avro 模式。后来我尝试了上述模式。但这也没有奏效。
-
将其保留为字符串而不是时间戳。日期不是时间戳。如果您需要处理该值以从日期中获取真正的时间戳,例如从日期中找出“明天”,您将需要使用字符串,然后使用表达式语言作为时间戳......跨度>
标签: json apache-nifi avro converters