我在CSV文件中收到以下示例数据:
options = {
baseUrl : serviceURL
}
到目前为止,我想到的处理器流程是:
Identifer Key,Name,Address,City,State,ZIP
WELD-424,Jane Doe,123 Main St,Whereverville,CA,90210
MOWN-175,John Doe,555 Broadway Ave,New York,NY,10010
属性avro.schema
将记录加载到数据库中Avro模式的外观如何?这是我最好的猜测(基于我关心的两个领域):
CSVReader
在上面指定{
"type" : "record",
"namespace" : "TheNameSpace",
"name" : "MySchema",
"fields" : [
{ "name" : "Identifier Key" , "type" : ["string"]}
{ "name" : "Name" , "type" : ["string", "null"]}
]
}
会导致错误,因为其中包含空格。但是,其他字段,例如"Identifier Key"
加载正常。
我面临的一些挑战:
"Name"
处理器和模式生态系统之外的另一个处理器块中完成?这似乎是一种常见情况,因为您希望字段的名称来自许多不同的来源。ConvertRecord
开始将是一个问题)。"Identifier Key" -> "_id"
开始)我还尝试使用"Name" -> "fullName"
处理器块首先将CSV转换为JSON,以便可以将其作为JSON导入MongoDB。它需要看起来像这样(标识符键字段全部小写),但是在ConvertRecord
运行后,标识符键的字段显示为null
:
ConvertRecord
答案 0 :(得分:0)
关于什么avro我鼓励您阅读avro specs并不是一个大文件,并且将解释如何使用Avro。 关于您的问题:
您的其他问题与简历具有相同的答案,如果您是我,请创建不带空格的Schema字段名称,然后将其更改为:
希望有帮助。
答案 1 :(得分:0)
要禁用名称验证,我们需要定义 avro模式注册表,Jira NiFI-4612,以解决此问题。
验证字段名称
false
一旦您在AvroSchemaRegistry
中定义avro模式,我们就可以在avro模式中使用空格。
要更改字段名称,请使用具有 Record Reader / Writer(具有新别名)控制器服务的 QueryRecord 处理器。
在QueryRecord处理器中将新属性添加为
select "Identifer Key" _id,Name,Address from FLOWFILE
QueryRecord 处理器的输出将以_id,Name,Address
作为新字段名称。