来源:https://dzone.com/articles/top-5-enterprise-etl-tools
https://stackshare.io/stackups/airflow-vs-apache-nifi
如果您希望采用一种新的工具来帮助执行ETL过程,请查看以下五个选项列表,看看哪一个适合您的需要。
随着数据量的不断增长,企业对数据仓库项目和高级分析系统的需求也在不断增加。ETL是它们的基本元素。它确保在各种数据库和应用程序中成功地集成数据。在这个ETL工具的比较中,我们将看到:
Apache NiFi
Apache StreamSets
Apache Airflow
AWS Data Pipeline
AWS Glue
它们是2019年最受欢迎的ETL工具之一。让我们比较一下利弊,找出适合您项目的最佳解决方案。
由于其缩写的“简单”解释,ETL的意思经常被误解。它代表三个数据仓库概念:提取、转换和加载。因此,ETL过程包括:
从不同的外部源提取数据
根据业务模式的需要对其进行转换。
将数据加载到新仓库。
ETL只是数据移动任务的一个子集。Ralph的Kimball书,数据仓库ETL工具包,定义了它的三个基本特性:
数据以适当的格式下载,以便进行分析。
它补充了更多的信息。
系统记录和记录数据的来源。
因此,数据不应该只是从一个地方重新加载到另一个地方——它应该在加载过程中得到改进。例如,ETL开发人员可以添加新的计算属性或技术属性。重要的是要跟踪数据在数据库中是如何出现的,以及如何和何时进行了更改。
一、ETL过程的步骤
一个web程序员可以把ETL架构想象成三个方面的集合:
一个数据源。
一个中间区域。
一个数据接收器。
数据流是数据从源到接收方的移动。每一个阶段都可能相当复杂。创建ETL软件的过程包括不同的挑战:
外部资源的多样性。
根据业务规则统一数据。
更新的频率和其他特定需求。
这就是IT公司需要清楚地了解源和目标应用程序的结构的原因。
二、一个ETL的例子
常见的ETL任务是将数据从RDBMS传输到另一个更好地用于商业智能工具的数据库。ETL工作分为两类:
(1)批处理作业
(2)流作业
从RDBMS获取数据的例子就是流作业的一个例子。数据被一个接一个地分开传输以便进一步处理。否则,我们可以讨论批处理作业。这意味着您可以对整个文件进行处理,并将其保存为更大的文件。不同的ETL系统以不同的方式处理这些任务。
如今,“批处理”方式已成为一种遗风。流数据源的不断增加导致ETL工具主要用于流作业。他们尽可能快地提供最新的数据。
通用和基于云的数据集成工具的多样性使得选择非常困难。因此,我准备了5个可靠的ETL解决方案(根据我的经验)。
1. Apache Nifi
价格:免费
官方网站:https://nifi.apache.org/
有用的资源:文档、教程
优点:
完美实现数据流编程概念。
处理二进制数据的机会。
数据来源。
缺点:
简单的用户界面。
缺少实时监控和每条记录的统计信息。
最好的ETL工具列表中的第一个是开源项目Apache NiFi。由Apache软件基金会开发,它基于数据流编程的概念。这意味着这个ETL工具允许我们可视化地从盒子中组装程序,并且几乎不需要编码就可以运行它们。所以,你不需要知道任何编程语言。
作为最流行的开放源码ETL工具之一,NiFi能够使用许多不同的源代码。例如RabbitMQ、JDBC查询、Hadoop、MQTT、UDP套接字等。至于操作,您可以筛选、调整、连接、分割、增强和验证数据。
Apache NiFi是用Java编写的,并在Apache 2.0许可下发布。它运行在JVM上,支持所有JVM语言。
这个ETL工具有助于创建长时间运行的作业,适合处理流数据和周期性批处理。对于手动管理的作业,它们也是可能的。然而,在建立这些机构时,有面临困难的风险。
由于其全面的体系结构,Apache NiFi被认为是最好的开源ETL工具之一。它是一个功能强大且易于使用的解决方案。FlowFile包括元信息。因此,该工具的可能性并不局限于CSV。您可以使用照片、视频、音频文件或二进制数据。
处理器包括三种输出:
(1)失败意味着FlowFile的适当处理存在问题。
(2)显示传入的流文件已被处理。
(3)成功表示流程文件的处理已经完成。
如果要删除终止的输出,可以使用特殊的复选框。您应该关注过程组。在高级ETL编程中,它们是结合复杂数据流元素所必需的。
另一个很棒的特性是可以使用各种队列策略(FIFO、LIFO等)。数据来源是一个连接服务,记录几乎所有的数据流。它非常方便,因为您可以看到数据是如何保存或执行的。唯一的缺点是该函数需要大量磁盘空间。
一些用户抱怨Apache NiFi的界面。实际上,它并不令人印象深刻,但它的可用性已经足够好了。UI有一个清晰、极简的设计,没有额外的元素。唯一的例外是对于长SQL查询缺少对文本字段的自动调整。你应该手动操作。
还有一个内置的节点集群。您可以选择几个实例,它将提取必要的ETL数据。Apache NiFi包括背压。快速连接MySQL、获取文件并将其添加到下一个处理器都需要使用它。
总之,Apache NiFi是其他主流ETL工具的不错选择。它的主要优点是有100多种不同的嵌入式处理器。它们提供了通过HTTP、S3或谷歌数据源下载文件并上传到MySQL或其他数据接收器的机会。您只需配置UI,按下RUN按钮,如果一切正常,它就会工作。
3. Apache Airflow
价格:免费
官方网站:https://airflow.apache.org
有用的资源:教程
优点:
适合不同类型的任务。
用户友好的界面,清晰的可视化。
可伸缩的解决方案。
缺点:
不适合流媒体工作。
需要额外的操作符。
这个用于设计、创建和跟踪工作流的现代平台是一个开源的ETL软件。它可以用于云服务,包括GCP、Azure和AWS。有机会使用天文学家企业号在Kubernetes上运行Airflow 。
您可以使用Python编写代码,但不必担心XML或拖放gui。工作流是用Python编写的,但是,步骤本身可以用任何您想要的方式完成。Airflow 被创建为一个非常灵活的任务调度程序。顶级的ETL工具之一适用于许多不同的用途。它用于训练ML模型、发送通知、跟踪系统和各种api中的强大功能。
关于平台的主要事实:
请您访问我们的主页或者发送给我们电子邮件。
它由Airbnb于2015年创建,并于2016年转型为Apache。
谷歌云设计的基础(2018年夏季测试版)。
工作流以有向无环图的形式执行。
Apache Airflow 是根据四个基本原则设计的。开发人员的目标是创建一个动态的、可扩展的、优雅的、可伸缩的解决方案。因此,它通过Python编码提供了动态管道生成。您还可以定义自己的操作符和执行器,并根据需要的抽象级别扩展库。管道清晰而准确,因为平台的核心包含了参数化。由于采用了模块化设计的消息队列,Airflow 可以很容易地缩放。
Apache Airflow 适用于大多数日常任务(运行ETL作业和ML管道,交付数据和完成DB备份)。但是,对于流作业来说,这是一个糟糕的选择。
该平台拥有一个充满可视化元素的现代UI。您可以看到所有正在运行的管道、跟踪进度和修复bug。这有助于在DAGs上完成复杂的任务。
至于工作流,它们是恒定和稳定的。该结构只是比ETL数据库更具动态性。如果您将工作流定义为代码,它们将更具有协作性、版本化、可测试性和可维护性。
该平台运行在私有Kubernetes集群上。它还包括资源管理工具和分析(StatsD, Prometheus, Grafana)。
Airflow 工作流程的ETL测试怎么样?您可以使用:
单元测试
集成测试
端到端测试(在某些情况下)
第一种类型适合检查DAG加载、Python操作符函数、自定义操作符和Bash/EMR脚本。该平台不需要任何原始配置。惟一需要更改的是DB连接字符串。您需要创建一个空数据库,并给用户创建/修改的权限。所以,一个Airflow 命令会处理所有剩下的。
总之,Apache Airflow 是一个用Python编写的自由、独立的框架。它是开源ETL工具的一个很好的例子。单独运行Airflow 是很有挑战性的,所以你应该使用不同的算子。