首页 > 解决方案 > 是否要在不推断顺序的情况下将新的 Avro 模式应用于 Nifi 中的现有模式?

问题描述

我正在使用 Nifi 加载 CSV,应用新模式并将它们加载到 SQl 数据库中。目前我正在编写一个 Avro 模式,并将该模式​​应用于每个 CSV。我正在根据传入 CSV 的顺序编写架构 - 第一个字段 = CSV 中的第一列。有没有办法根据列名将一个模式映射到另一个模式?即我可以说'csv.name -> sql.username'。

我知道这可以在上传 csvs 之前手动完成,我想知道 Nifi 中是否有一种方法可以根据数据当前模式将模式映射到数据,不知道当前模式的顺序,只是字段。

我已阅读有关记录路径和更新记录的信息。我正在寻找将整个传入架构与新架构匹配的东西,而不是基于顺序。

Avro 架构设置:

AvroSchema 设置

PutDatabaseRecord 设置

PutDatabaseRecord 设置

标签: schemaapache-nifiavro

解决方案


在我看来,您有两个选择:

选项 1(更好的一个):在 您的记录中添加标题行并设置Treat First Line as HeaderTrueCSVReader

选项 2: 设置Schema Access Strategy为(自 NiFi 1.9.0 起可用CSVReaderInfer Schema

第一个可以保证您的字段类型的正确映射。


推荐阅读