etl - Apache NiFi 是否适合此用例?
问题描述
请帮我选择合适的工具。我有以下任务:有 N 个数据源(N < 20),它可以是关系数据库(MySQL、PostgreSQL)或 REST API。我需要将 N 个数据源中的所有数据加载到单个关系数据库中(仅一次)。所以最终的目标似乎是一个简单的 ETL:
- 从数据源中提取数据
- 转换数据(映射数据以适应目标数据库模式)
- 加载到数据库
(注意:每个源数据库包含 10-15 个耦合表,包含 100 000 - 1 000 000 行)
我目前正在尝试寻找合适的工具,我相信 Apache NiFi 正是我所需要的:喜欢通过友好的 UI 配置所有内容而不是编码和重新发明轮子的想法。
几个问题:
- Apache NiFi 看起来是否适合我的任务,还是有点矫枉过正?
- 配置 Apache NiFi 与使用我熟悉的某种编程语言(例如 Python)编写自定义脚本相比,我对配置 Apache NiFi 有什么好处吗?
谢谢!
解决方案
Apache NiFi 可能是这种情况下的正确答案,但可以归结为细节。
您拥有许多不同数据源的情况是 NiFi 的常见部署模式,其中用户将执行以下分层方法:
- 从各自的来源引入数据,
- 注释/提取一条数据的关键属性/属性
- 将数据转换为规范表示,
- 路由到适当的下游消费者,
- 通过处理器将其传递到目标存储/系统/服务中
脚本是有多少人最初倾向于解决这个问题,但可能会导致这些一次性过程的不规则集合,这些过程很难作为一个整体来考虑,也很难解释它们之间的交互。对于将不断发展并可能带来额外源/汇的长期运行数据流,NiFi 是一个很好的产品,可以将这条数据路径纳入一个统一的视图。UI 进一步使用户能够在这些“规范”不可避免地发生变化时进行更改,并且比更改一个或多个脚本/应用程序更容易做出反应。
鉴于提到“简单”ETL 以及您使用数据库以外的其他来源的事实,这似乎非常适合 NiFi 的预期用途范围。NiFi 不太适合一些更复杂的 ETL 操作,也没有为这些类型的操作定制的 UI。
推荐阅读
- python - 为什么 x % 5 == 0 结果是不能被 5 整除的数字
- python - Python(熊猫) - 基于一列对多列求和
- python - 访问 github 中保存的 Pickle 模型
- python - 我想安装一个 pip 包,但是发生了一些错误
- java - Spark 3.0 排序并应用于组 Scala/Java
- node.js - 如何使用云功能检查云存储中的文件路径是否有效?
- reactjs - 如何在 React js 中检测移动视图和移动应用程序视图
- html - 使用 CSS/HTML 删除特定元素的边距
- azure-devops - 如何在 Azure Devops 中阻止用户读取分支的另一个用户?
- ios - SwiftUI - @Published 属性未从协调器更新视图