Apache NiFi 是广泛使用的数据流管理工具,也可以实现ETL功能.
本次将讨论如何在NiFi实现ETL过程中实现转换功能,此处以列名转换为例.
列名转换是ETL过程中常常遇到的场景。例如来源表user的主键id,要求写入目标表user的uid字段内,那么就需要列名转换.
既然限定在 NiFi 框架内,那么只涉及实现方案选型.
适用于执行定制化SQL的场景,SQL形如
select id as uid from user
处理器组实现如图
适用于使用 NiFi 组件生成SQL的场景
QueryRecord 的 SQL 形如
select id as uid from FLOWFILE
适用于要实现复杂转换,且性能要求不高的场景
实现方式因人而异,原理就是在 Groovy 脚本内解析数据,做列名转换再输出即可
能实现复杂规则,且可以热加载,不需要部署和重启NiFi
需要学习 nifi groovy 代码的编写方法
适用于要实现复杂转换,且性能要求高的场景
类似 2.3 ,但是需要设计覆盖自己业务的转换规则,一般规则不仅有列名转换,还有类型转换,格式转换等复杂业务。
能实现复杂规则
可以覆盖更多业务规则,不仅是列名转换
性能比2.3高很多
需要部署和重启NiFi
目前项目上使用方案2.2,因为项目上业务简单,直接使用SQL上手容易,便于维护和知识转移
QueryRecord SQL 支持功能有限,需要进一步拓展来满足更多业务需求
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。