schema - 是否要在不推断顺序的情况下将新的 Avro 模式应用于 Nifi 中的现有模式?
问题描述
我正在使用 Nifi 加载 CSV,应用新模式并将它们加载到 SQl 数据库中。目前我正在编写一个 Avro 模式,并将该模式应用于每个 CSV。我正在根据传入 CSV 的顺序编写架构 - 第一个字段 = CSV 中的第一列。有没有办法根据列名将一个模式映射到另一个模式?即我可以说'csv.name -> sql.username'。
我知道这可以在上传 csvs 之前手动完成,我想知道 Nifi 中是否有一种方法可以根据数据当前模式将模式映射到数据,不知道当前模式的顺序,只是字段。
我已阅读有关记录路径和更新记录的信息。我正在寻找将整个传入架构与新架构匹配的东西,而不是基于顺序。
Avro 架构设置:
PutDatabaseRecord 设置
解决方案
在我看来,您有两个选择:
选项 1(更好的一个):在
您的记录中添加标题行并设置Treat First Line as Header
为True
CSVReader
选项 2:
设置Schema Access Strategy
为(自 NiFi 1.9.0 起可用CSVReader
)Infer Schema
第一个可以保证您的字段类型的正确映射。
推荐阅读
- python-3.x - 在 Numpy 和手动计算之间得到不同的答案
- python - 为什么我没有收到错误但代码不起作用?
- python - AttributeError:“NoneType”对象没有属性“register_forward_hook”
- c# - 'StandardKernel' 已过时:`使用 StandardKernelConfiguration 和 StandardReadonlyKernel`
- ruby-on-rails - Nil 对象的活动模型序列化程序问题
- django - 如何在外键 django admin 中使用详细名称?
- python - 关于asyncio模块,如何获取子协程的返回值?
- oracle - Oracle 打印(多值)VARRAY 类型使用存储过程
- css - 切出滚动条的元素
- c++ - 使用 FTLK 库设置我的 MacOS Catalina C++ 编码环境