Apache NiFi 是否适合此用例?
Is Apache NiFi a proper instrument for this use case?
请帮我选择一个合适的工具。我有以下任务:有 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 可能是这种情况的正确答案,但可以归结为细节。
您拥有许多不同数据源的情况是 NiFi 的常见部署模式,其中用户将执行某种程度的分层方法:
- 从各自的来源引入数据,
一条数据- annotating/extracting键attributes/properties
- 将数据转换为规范表示,
- 路由到适当的下游消费者,
- 通过处理器传递它以在目标中持久化 storage/system/service
脚本是有多少人最初倾向于解决这个问题,但可能会导致不守规矩地收集这样的一次性过程,这些过程很难作为一个整体来考虑,也很难理解它们之间的相互作用。对于将演变并可能带来额外 sources/sinks 的长期 运行 数据流,NiFi 是将此数据路径整合到一个统一视图中的绝佳产品。 UI 进一步授权用户在那些 "specifications" 不可避免地发生变化时进行更改,并且比更改一个或多个 scripts/apps 更容易做出反应。
考虑到 "simple" ETL 的提及以及您正在使用数据库以外的其他来源的事实,这似乎很适合 NiFi 的预期用途范围。 NiFi 不太适合一些更复杂的 ETL 操作,也没有为这些类型的操作定制的 UI。
请帮我选择一个合适的工具。我有以下任务:有 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 可能是这种情况的正确答案,但可以归结为细节。
您拥有许多不同数据源的情况是 NiFi 的常见部署模式,其中用户将执行某种程度的分层方法:
- 从各自的来源引入数据, 一条数据
- annotating/extracting键attributes/properties
- 将数据转换为规范表示,
- 路由到适当的下游消费者,
- 通过处理器传递它以在目标中持久化 storage/system/service
脚本是有多少人最初倾向于解决这个问题,但可能会导致不守规矩地收集这样的一次性过程,这些过程很难作为一个整体来考虑,也很难理解它们之间的相互作用。对于将演变并可能带来额外 sources/sinks 的长期 运行 数据流,NiFi 是将此数据路径整合到一个统一视图中的绝佳产品。 UI 进一步授权用户在那些 "specifications" 不可避免地发生变化时进行更改,并且比更改一个或多个 scripts/apps 更容易做出反应。
考虑到 "simple" ETL 的提及以及您正在使用数据库以外的其他来源的事实,这似乎很适合 NiFi 的预期用途范围。 NiFi 不太适合一些更复杂的 ETL 操作,也没有为这些类型的操作定制的 UI。