请选择 进入手机版 | 继续访问电脑版

设为首页 收藏本站
思科社区 关注
思科社区

搜索
热搜: 邮件服务器
查看: 693|回复: 2

【原创】五款企业级ETL工具(1)

[复制链接]
发表于 2020-10-28 15:05:58 | 显示全部楼层 |阅读模式

引言:我们在此为大家罗列和比较了时下五款企业级ETL工具的优缺点,希望能够帮助您找出最适合手头项目的解决方案。

在商业环境中,随着各类数据量的不断猛增,企业对于那些以ETL为基本要素的数据仓库项目和高级分析系统的需求也在不断增多。此处ETL所对应的是数据仓库的三个概念:提取(Extracting)、转换(Transforming)和加载(Loading)。其主要流程包括:
1.   从不同的外部源提取数据。
2.   将数据转换为所需的业务模型。
3.   将数据加载到新的仓库之中。
可见,ETL是整个数据迁移任务的一个子集。在《数据仓库ETL工具包(Warehouse ETL Toolkit)》一书中(请详见https://www.amazon.com/Data-Warehouse-ETL-Toolkit-Techniques-Extracting/dp/0764567578),定义了ETL的三个基本特征:
u  以适当的格式下载数据,并予以分析。
u  它包含有许多额外的信息。
u  系统会记录数据的来源。
因此,数据不应该只是简单地从一处被加载到另一处,而应该在加载的过程中得到改进与优化。例如:ETL开发人员可以添加新的技术属性,去跟踪数据在数据库中的显示方式、数据被更改的时间及方式。
ETL的流程步骤
通常,Web程序员可以将ETL架构想象成如下图所示的三个区域:
u  数据源。
u  中间区域。
u  数据接收器。

数据流从源头向接收器移动。由于每个阶段都非常复杂,因此创建ETL软件的过程往往会包括如下不同的挑战:
1.   外部数据源的多样性。
2.   需要根据业务规则来统一数据。
3.   更新频率和其他具体的要求。
因此,普通IT公司需要清楚地了解数据源的结构,并配备相应的目标应用。
一个ETL示例
常见的ETL任务是将数据从关系数据库管理系统(Relational Database Management SystemRDBMS)传输到另一个更适合于商业智能工具的数据库中。因此,ELT的作业可分为两种类型:
1.   批量作业
2.   流式作业
其中,流式作业的一个例子是:从RDBMS中获取数据,逐个且单独地传输出去,以备后期处理。否则,我们认为它属于批量处理的范畴。例如:您可以先获取整个文件,再对其进行处理,最后将其保存到更大的文件中。可以说,不同的ETL系统会以不同的方式处理上述任务。
如今,单一的批量方法已成被淘汰。持续增长的流式数据源,导致了各种ETL工具被主要用于通过处理流式作业,来尽快地提供出各种最新的数据。

同时,由于ETL能够将数据成功地集成到各种数据库和应用之中,而各种玲琅满目的云端数据集成工具,经常会让我们难以做出选择,因此我在此为大家罗列和比较了时下五款企业级ETL工具的优缺点,希望能够帮助您找出最适合手头项目的解决方案。
1. Apache Nifi

定价 :免费
官方网站:https://nifi.apache.org/
实用资源:文档(https://nifi.apache.org/docs.html),教程(https://hortonworks.com/apache/nifi/#tutorials)。
优点:
u  完美地实现了数据流的编程概念。
u  能够处理二进制数据。
u  提供数据来源(Data Provenance)。
缺点:
u  用户界面过于简单。
u  缺乏实时监控和逐条记录的统计数据。
Apache Software Foundation开发的开源项目--Apache NiFi可谓最好的ETL工具之一。由于基于数据流的编程概念,因此它能够让我们在boxes中可视化地组装各种程序,并在几乎不需要任何代码的情况下运行起来。在这一点上,您完全可以不必了解任何编程语言。
作为一款备受欢迎的ETL工具,NiFi能够处理许多不同的数据源,其中包括:RabbitMQJDBC查询、HadoopMQTT、以及UDP套接字等。而在操作方面,您可以对数据进行筛选、调整、连接、拆分、增强和验证。
由于Apache NiFi是用Java编写而成,并且是在Apache 2.0的许可证中发布的,因此它不但能够在JVM上运行,而且支持所有的JVM语言。
ETL工具既有助于用户创建长期运行(long-running)的作业,又适用于处理流式数据和一些周期性的批处理。不够,对于那些手动式管理任务而言,用户在设置NiFi时,可能会碰到一些麻烦。
Apache NiFi是一种功能强大且易于使用的解决方案。它采用了全面的架构模式,其FlowFile包含了各种元信息。因此,该工具不但能够识别CSV,还可以处理照片、视频、音频文件、以及其他二进制数据。
NiFi的处理器包括如下三种输出:
1.   Failure:意味着FlowFile的处理过程中存在着一些问题。
2.   Original:表示传入的FlowFile已被处理。
3.   Success:表示FlowFiles的处理已完成。
您可以使用特殊的复选框,来删除那些已终止的输出。同时,您应该注意在高级ETL编程中的进程组(Process Groups),它们对于组合复杂的数据流元素来说是非常必需的。
NiFi的另一个实用功能是:可以采用不同的队列策略(包括FIFOLIFO、以及其他)。Data Provenance是一种用于记录数据流中几乎所有内容的连接服务。它可以便利地让您获悉数据的保存或执行方式。当然,该功能的唯一缺点是需要大量的磁盘空间。
虽然在我看来Apache NiFi的界面不但简洁清晰,而且可用性强,但是仍有不少用户抱怨其缺少必要的组件。例如,他们认为:由于缺少了自动调整各种长SQL查询的文本字段,因此只能通过手动来完成。
NiFi拥有内置的Node集群。您可以通过选择一些实例,来让它提取必要的ETL数据。另外,NiFi可以通过背压(back pressure)机制,来快速地连接MySQL,获取某个文件,并将其添加到下一个处理器上。
总而言之,Apache NiFi的主要优势在于拥有100多种不同的嵌入式处理器。它们能够通过HTTPS3Google Data Source来下载文件,并能将文件上传到MySQL、或其他数据接收器上。您只需配置UI,按下RUN按钮,后续它就能自动运行了。
2. Apache StreamSets

定价:免费
官方网站:https://streamsets.com
实用资源:文档(https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Getting_Started/GettingStarted_Title.html),教程(https://github.com/streamsets/tutorials),开发者支持论坛(https://groups.google.com/a/streamsets.com/forum/#!forum/sdc-user),源代码(https://github.com/streamsets
优点:
u  每个处理器都有基于单条记录的统计信息,且具有友好的可视化调试效果。
u  用户界面非常友好。
u  提供流式和基于记录的数据工具。
缺点:
u  缺少可重用的JDBC配置。
u  更改单个处理器的设置后,需要停止整个数据流。
Apache StreamSets可谓Apache NiFi的强有力竞争对手,我们很难说出谁更胜一筹。
根据流畅且通用的数据流格式的设计思想,所有被放入StreamSets的数据都会被自动转换为可交换的记录。与Apache Nifi不同的是,该ETL工具并不显示处理器之间的队列。如果您想使用其他不同的格式,Apache Nifi通常需要从一个版本的处理器转换为另一个版本。而StreamSets则不然,您需要为设置的更改停止整个数据流,而不仅仅停止某一个处理器。
StreamSets中,虽然对于错误的修复看似困难,但事实上,由于它提供实时的调试工具,因此用户反而更容易实现错误的修复。借助具有实时仪表板和显示所有统计信息的友好用户界面,您可以快速地发现并修复任何出现的错误。此外,您还可以在处理器之间的连接处,放置各种具有记录功能的过滤器,以检查不同可疑的记录。因此,它具有如下四种处理器的变体:
u  Origin:处理器从数据源接收信息。
u  Processors:获取和转换接收到的数据。
u  Destinations:将转换后的数据放入各种外部文件。
u  Executors:处理那些由其他处理器完成的操作。
StreamSets的各种处理器可以生成包括错误在内的动作和事件。您需要executors,来跟踪和修复这些错误。虽然那些只用到ProcessorsController Services的用户会更喜欢Apache NiFi的简约设计。但是,StreamSets也有着规划合理的架构。凭借着友好的用户界面,它也并不那么难以上手。
我个人感觉:由于缺少了针对JDBC设置的Controller Services,因此在调整每一个处理器时,都会让人觉得有些棘手。
StreamSets会在运行数据流之前检查所有的处理器,即:在数据流启动之前,必须确保所有处理器的连接。该功能会导致StreamSets不允许用户留下任何暂未连接、以备将来修复错误的处理器。StreamSets的另一个缺点是:无法让用户同时选择多个处理器。毕竟,逐一移动并重组多个处理器,会耗费大量的时间和精力。
总而言之,作为一款成熟的开源ETL工具,它提供了便捷的可视化数据流和时尚的Web界面。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分5 (1 评价)
发表于 2020-11-10 17:20:07 | 显示全部楼层
高水平的技术文章。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
发表于 2020-11-14 17:03:29 | 显示全部楼层
專業說明收藏中.感謝
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
您需要登录后才可以回帖 思科 CCO 登录 | 思科 CCO 注册   

本版积分规则

Archiver | 思科社区  

GMT+8, 2020-12-2 17:09 , Processed in 0.099409 second(s), 33 queries .

京ICP备11014401号-17

© 2020 思科系统.版权所有 重要声明 | 保密声明 | 隐私权政策 | 商标 |

快速回复 返回顶部 返回列表