排名前5位的企业ETL工具

随着数据量的不断增长,企业对用于高级分析的数据仓库项目和系统的需求不断增长。ETL是它们的基本要素。它确保在各种数据库和应用程序中成功进行数据集成。在此ETL工具比较中,我们将研究:

  1. Apache NiFi
  2. Apache StreamSets
  3. Apache Airflow
  4. AWS数据管道
  5. AWS胶水

它们是2019年最受欢迎的ETL工具之一。让我们比较优缺点,以找到适合您项目的最佳解决方案。

ETL意义往往被误解,因为它的英文缩写“简单”的解释。它代表三个数据仓库概念:提取,转换,加载。因此,ETL过程包括:

  1. 从不同的外部来源提取数据
  2. 根据业务模型进行转换
  3. 数据加载到新仓库中。

ETL只是数据移动任务的一部分。Ralph的Kimball书《数据仓库ETL工具包》定义了其三个基本功能:

  • 数据以适合分析的格式下载。
  • 它补充了其他信息。
  • 系统记录并记录数据的来源。

因此,数据不应该只是从一个地方重新加载到另一个地方,而是应该在加载过程中加以改进。例如,ETL开发人员可以添加新的计算或技术属性。跟踪数据在数据库中的显示方式以及更改的方式和时间非常重要。

ETL流程步骤

Web程序员可以将ETL体系结构想象为三个方面的集合:

  • 数据源。
  • 一个中间区域。
  • 数据接收器。

数据流是数据从源到接收器的运动。每个阶段都可能非常复杂。创建ETL软件的过程包括不同的挑战:

  1. 各种外部来源。
  2. 根据业务规则统一数据。
  3. 更新的频率和其他特定要求。

因此,IT公司需要对源和目标应用程序的结构有清晰的了解。

一个ETL示例

常见的ETL任务是将数据从RDBMS传输到另一个更适合于商业智能工具的数据库。ELT作业分为两种类型:

  1. 批处理作业
  2. 流作业

从RDBMS获取数据的情况是流作业的一个示例。数据分别一个接一个地传输以进行进一步处理。否则,我们可以谈论批处理作业。这意味着您可以提取整个文件,进行处理,然后将其保存到更大的文件中。各种ETL系统以不同的方式处理这些任务。

如今,仅批处理方法已成为一种遗物。流数据源的数量不断增长,导致ETL工具主要用于流作业。它们使最新数据尽快可用。

各种常见的和基于云的数据集成工具使选择变得非常困难。因此,我准备了五个可靠的ETL解决方案的列表(以我的经验)。

1. Apache Nifi

定价:免费

官方网站https : //nifi.apache.org/

有用的资源文档教程

优点:

  • 数据流编程概念的完美实现。
  • 处理二进制数据的机会。
  • 数据来源。

缺点:

  • 简单的用户界面。
  • 缺乏实时监控和按记录统计。

最佳ETL工具列表中的第一个是开源项目Apache NiFi。它由Apache软件基金会开发,基于数据流编程的概念。这意味着该ETL工具使我们能够从盒子中直观地组装程序并几乎无需编码即可运行它们。因此,您不必了解任何编程语言。

NiFi是最受欢迎的开源ETL工具之一,能够与许多不同的源一起使用。例如,RabbitMQ,JDBC查询,Hadoop,MQTT,UDP套接字等。对于操作,您可以过滤,调整,联接,拆分,增强和验证数据。

Apache NiFi用Java编写,并根据Apache 2.0许可进行分发。它运行在JVM上并支持所有JVM语言。

此ETL工具有助于创建长期运行的作业,并且适合处理流数据和定期批处理。对于手动管理的作业,它们也是可能的。但是,在设置它们时可能会遇到困难。

得益于完善的架构,Apache NiFi被认为是最好的开源ETL工具之一。这是一个功能强大且易于使用的解决方案。FlowFile包含元信息。因此,该工具的功能不仅限于CSV。您可以处理照片,视频,音频文件或二进制数据。

处理器包括三个输出:

  1. Failure  表示对FlowFile的适当处理存在问题。
  2. Original 显示传入的FlowFile已被处理。
  3. Success  表示FlowFiles的处理已完成。

如果要删除终止的输出,可以使用特殊的复选框。您应该注意过程组。在高级ETL编程中,它们是组合复杂数据流的元素所必需的。

另一个重要功能是可以使用各种队列策略(FIFO,LIFO和其他)。数据源是一项连接的服务,几乎记录了数据流中的所有内容。这非常方便,因为您可以看到如何保存或执行数据。唯一的缺点是该功能需要大量磁盘空间。

一些用户抱怨Apache NiFi的界面。实际上,它并不令人印象深刻,但是可用性足够好。UI具有清晰,简约的设计,没有多余的元素。唯一的例外是缺乏针对长SQL查询的文本字段自动调整功能。您应该手动进行操作。

还有一个内置的Node集群。您可以选择几个实例,它将提取必要的ETL数据。Apache NiFi包括背压。快速连接到MySQL,获取文件并将其添加到下一个处理器是必需的。

综上所述,Apache NiFi是其他主流ETL工具的不错替代品。它的主要优势是100多种不同的嵌入式处理器。它们提供了通过HTTP,S3或Google数据源下载文件并将其上传到MySQL或其他数据接收器的机会。您只需要配置UI,按RUN(运行)按钮即可,如果一切正常,则可以使用。

2. Apache StreamSets

定价:免费

官方网站https : //streamsets.com

有用的资源文档教程开发人员支持论坛源代码

优点:

  • 每个处理器都有单独的每条记录统计信息,并且具有很好的可视化效果,可以有效地进行调试。
  • 有吸引力的用户界面。
  • 流或基于记录的数据的好工具。

缺点:

  • 缺少可重用的JDBC配置。
  • 更改一个处理器的设置需要停止整个数据流。

Apache StreamSets是Apache NiFi的强大竞争对手。很难说在这些免费ETL工具上哪个更好。

您放入StreamSets中的所有数据都会自动转换为可交换的记录。通用格式旨在实现流畅的流式传输。与Apache Nifi不同,此ETL工具不会显示处理器之间的队列。如果要使用不同的格式,Apache Nifi要求将处理器的一个版本转换为另一个版本。StreamSets避免了这些操作。您需要停止整个数据流以更改设置,而不是仅停止一个处理器。

尽管似乎在StreamSet中修复错误更加困难,但实际上,由于具有实时调试工具,因此更容易。凭借带有实时仪表板的用户友好界面和所有必要的统计信息,您可以注意到并修复任何错误。此外,还有机会在处理器之间的连接上放置记录过滤器,以检查可疑记录。处理器有四种变体:

  • Origin  处理器从数据源接收信息。
  • 获取并转换接收到的数据的Processors 。
  • Destinations 将转换后的数据放置到外部文件中。
  • Executors 处理其他处理器完成的动作。

StreamSets处理器可以生成动作和事件,包括错误。为了跟踪和修复它们,您需要执行程序。一些用户喜欢Apache NiFi,因为它的设计更简单。您需要的只是处理器和控制器服务。但是,StreamSets也具有深思熟虑的体系结构,这并不难习惯。UI也看起来更好。

我感到缺少控制器服务,这对于JDBC设置非常重要。为每个处理器调整所有JDBC设置确实很烦人。

StreamSets在运行数据流之前会检查所有处理器。此功能似乎很有用。以我的经验,这是一个有争议的事情,StreamSets不允许您离开未连接的处理器以在将来修复错误。必须在数据流开始之前连接所有它们。至于其他缺点,我感到缺乏可能性,因为我一次不能选择多个处理器。移动许多处理器并一一重组它们需要太多的时间和精力。

总而言之,这是一个成熟的开源ETL工具,具有便捷的可视数据流和现代化的Web界面。我建议您尝试使用StreamSet和Apache NiFi来找出最适合您的用途。

3. Apache Airflow

定价:免费

官方网站https : //airflow.apache.org

有用的资源教程

优点:

  • 适合不同类型的任务。
  • 友好的用户界面,清晰可见。
  • 可扩展的解决方案。

缺点:

  • 不适合流作业。
  • 需要其他运算符。

这个用于设计,创建和跟踪工作流的现代平台是一个开源ETL软件。它可以与云服务一起使用,包括GCP,Azure和AWS。有机会使用天文学家企业版在Kubernetes上运行Airflow。

您可以使用Python进行编码,而不必担心XML或拖放式GUI。工作流程是用Python编写的,但是,步骤本身可以用任何您想要的方式完成。Airflow的创建是一个非常灵活的任务计划程序。顶级的ETL工具之一适用于许多不同的目的。它用于训练ML模型,发送通知,跟踪系统以及各种API中的功能。

有关平台的主要事实:

  1. 气流即服务可从Qubole和astronomer.io获得。
  2. 它由Airbnb在2015年创建,并于2016年过渡到Apache。
  3. Google Cloud Composer的基础(2018年夏季版)。
  4. 工作流按有向非循环图(DAG)执行。

Apache Airflow是根据四个基本原则设计的。开发人员旨在创建一个动态可扩展优雅可扩展的解决方案。因此,它通过Python编码提供了动态管道生成。您还可以定义自己的运算符和执行程序,并根据所需的抽象级别扩展库。管道清晰,准确,因为参数化已包含在平台的核心中。得益于带有消息队列的模块化设计,Airflow可以轻松扩展。

Apache Airflow适用于大多数日常任务(运行ETL作业和ML管道,交付数据并完成数据库备份)。但是,对于流作业来说,这是一个糟糕的选择。

该平台具有一个充满可视化元素的现代UI。您可以查看所有正在运行的管道,跟踪进度并修复错误。这有助于完成DAG上的复杂任务。

对于工作流,它们是恒定且稳定的。该结构比ETL数据库更具动态性。如果将工作流定义为代码,则它们将更具协作性,可版本化,可测试和可维护。

该平台在私有Kubernetes集群上运行。它还包括资源管理工具和分析(StatsD,Prometheus,Grafana)。

气流工作流程的ETL测试如何?您可以使用:

  • 单元测试
  • 整合测试
  • 端到端测试(在某些情况下)

第一种类型适用于检查DAG加载,Python运算符功能,自定义运算符和Bash / EMR脚本。该平台不需要任何原始配置。唯一应该更改的是数据库连接字符串。您需要创建一个空数据库,并向用户授予CREATE / ALTER的权限。因此,气流命令将处理所有其余部分。

总之,Apache Airflow是一个免费的,独立的用Python编写的框架。这是开源ETL工具的一个很好的例子。单独运行气流可能会很困难,因此您应该使用其他操作员。

4. AWS数据管道

定价可变

官方网站https : //aws.amazon.com/datapipeline/

有用的资源文档社区论坛

优点:

  • 易于使用的ETL技术
  • 价格公道
  • 灵活性好

缺点:

  • 没有很多内置功能

该Web服务可确保在AWS计算和各种数据源之间处理和移动数据。它提供对存储数据的永久访问及其转换。最终结果可以传输到AWS服务。它们是Amazon DynamoDB,Amazon RDS,Amazon EMR和Amazon S3。该ETL工具简化了创建复杂数据处理工作负载的过程。它有助于实现可重复的,高度可用的和可靠的工作量。

AWS Data Pipeline使您可以移动和处理以前在本地数据孤岛中锁定的数据。亚马逊声称其ETL工具具有六个主要优势:

  1. 准确性
  2. 简单
  3. 适应性
  4. 好价钱
  5. 可扩展性
  6. 透明度

AWS Data Pipeline是一项可靠的服务,在发生任何故障时会自动重试活动的流程。您还将通过Amazon SNS接收通知。可以将它们设置为成功运行,延迟或失败。

拖放式控制台允许快速简单地设计管道。内置的前提条件可防止您编写任何额外的逻辑来使用它们。Web开发人员喜欢各种流行功能。我的意思是计划,依赖性跟踪和问题处理。该服务的灵活设计允许平滑处理大量文件。

与其他ETL工具相比,该产品并不昂贵。AWS Data Pipeline是一种无服务器编排服务,您只需为使用的内容付费。此外,还有针对新用户的免费试用版。这是一个透明的解决方案。用户接收有关管道的完整信息,并对计算资源拥有完全控制权。

最后,我特别推荐此ETL工具执行管道作业。我在当前项目中使用它来传输数据。尽管AWS Data Pipeline没有很多内置功能,但它提供了方便的UI。它可以生成实例并确保级联文件管理。我喜欢带有内置处理器的简单,廉价且有用的工具,该工具使您可以通过UI进行所有操作。

5. AWS胶水

AWS GLUE

定价可变

官方网站https : //aws.amazon.com/glue/

有用的资源教程

优点:

  • 支持各种数据源。
  • 与AWS服务的良好集成。

缺点:

  • 大量的手工工作。
  • 灵活性差。

基于代码的无服务器ETL替代传统拖放平台是有效的,但雄心勃勃的解决方案。AWS Glue允许您在AWS管理控制台中创建和运行ETL作业。该服务从AWS提取数据和元数据,将其放入目录中,并使其可搜索,可查询并可用于ETL。该过程包括三个步骤:

  • 通过构建目录(JSON,CSV,Parquet和许多其他格式可用)对数据进行分类。
  • 生成ETL代码并编辑转换(用Scala或Python编写)。
  • 计划和运行ETL作业。

Amazon指出了此ETL工具的三个主要优点。

  1. 便利性: 与众多AWS服务和引擎紧密集成,对于已经使用Amazon产品的用户而言,此工具非常简单。缺点是您不能在本地或任何其他云环境中实现它。

  2. 有利可图: 无服务器解决方案意味着您无需配置或管理基础架构。因此,成本取决于“数据处理单元”的度量。您只需为正在运行的作业付费。

  3. 强大: 创建,维护和运行ETL作业的自动化非常完美。另一方面,该服务也需要大量的手工工作。

Apache Spark用作ETL逻辑的基础。但是,您可能会注意到与普通的Spark有很大的不同。该服务具有使用特定Glue方法的“动态框架”,而Spark使用“数据框架”。

AWS Glue是AWS生态系统的现代而强大的一部分。但是您应该注意它的细微差别。该服务提供了抽象级别,您必须在其中标识表。它们代表您的CSV文件。这里有很多手动工作,但是最后,它将为Spark生成代码并启动它。您可以在Scala或Python中下载此代码,然后根据需要进行更改。它适用于各种数据源,但是该服务迫使您选择特定的解决方案。如果您想尝试另一种方法,则可能无法执行该操作。

如何选择正确的ETL工具

InfoWorld断言,ETL在构建数据仓库系统中造成最大的成本。这是需要特别注意的瓶颈。正确的ETL实施是您优化成本和加快工作速度的机会。选择ETL工具时,请考虑以下五个条件:

  • 系统的复杂性。
  • 您的数据要求。
  • 开发人员经验。
  • ETL技术的成本。
  • 特殊的业务需求。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值