在商业环境中,随着各类数据量的不断猛增,企业对于那些以ETL为基本要素的数据仓库项目和高级分析系统的需求也在不断增多。此处ETL所对应的是数据仓库的三个概念:提取(Extracting)、转换(Transforming)和加载(Loading)。其主要流程包括:
创新互联公司公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元朝天做网站,已为上家服务,为朝天各地企业和个人服务,联系电话:028-86922220
可见,ETL是整个数据迁移任务的一个子集。在《数据仓库ETL工具包(Warehouse ETL Toolkit)》一书中(请详见https://www.amazon.com/Data-Warehouse-ETL-Toolkit-Techniques-Extracting/dp/0764567578),定义了ETL的三个基本特征:
因此,数据不应该只是简单地从一处被加载到另一处,而应该在加载的过程中得到改进与优化。例如:ETL开发人员可以添加新的技术属性,去跟踪数据在数据库中的显示方式、数据被更改的时间及方式。
ETL的流程步骤
通常,Web程序员可以将ETL架构想象成如下图所示的三个区域:
数据流从源头向接收器移动。由于每个阶段都非常复杂,因此创建ETL软件的过程往往会包括如下不同的挑战:
因此,普通IT公司需要清楚地了解数据源的结构,并配备相应的目标应用。
一个ETL示例
常见的ETL任务是将数据从关系数据库管理系统(Relational Database Management System,RDBMS)传输到另一个更适合于商业智能工具的数据库中。因此,ELT的作业可分为两种类型:
其中,流式作业的一个例子是:从RDBMS中获取数据,逐个且单独地传输出去,以备后期处理。否则,我们认为它属于批量处理的范畴。例如:您可以先获取整个文件,再对其进行处理,***将其保存到更大的文件中。可以说,不同的ETL系统会以不同的方式处理上述任务。
如今,单一的批量方法已被淘汰。持续增长的流式数据源,导致了各种ETL工具被主要用于通过处理流式作业,来尽快地提供出各种***的数据。
同时,由于ETL能够将数据成功地集成到各种数据库和应用之中,而各种琳琅满目的云端数据集成工具,经常会让我们难以做出选择,因此我在此为大家罗列和比较了五款企业级ETL工具的优缺点,希望能够帮助您找出最适合手头项目的解决方案。
1. Apache Nifi
定价 :免费
官方网站:https://nifi.apache.org/
实用资源:文档,教程。
优点:
缺点:
由Apache Software Foundation开发的开源项目--Apache NiFi可谓是***的ETL工具之一。由于基于数据流的编程概念,因此它能够让我们在boxes中可视化地组装各种程序,并在几乎不需要任何代码的情况下运行起来。在这一点上,您完全可以不必了解任何编程语言。
作为一款备受欢迎的ETL工具,NiFi能够处理许多不同的数据源,其中包括:RabbitMQ、JDBC查询、Hadoop、MQTT、以及UDP套接字等。而在操作方面,您可以对数据进行筛选、调整、连接、拆分、增强和验证。
由于Apache NiFi是用Java编写而成,并且是在Apache 2.0的许可证中发布的,因此它不但能够在JVM上运行,而且支持所有的JVM语言。
该ETL工具既有助于用户创建长期运行(long-running)的作业,又适用于处理流式数据和一些周期性的批处理。不过,对于那些手动式管理任务而言,用户在设置NiFi时,可能会碰到一些麻烦。
Apache NiFi是一种功能强大且易于使用的解决方案。它采用了全面的架构模式,其FlowFile包含了各种元信息。因此,该工具不但能够识别CSV,还可以处理照片、视频、音频文件、以及其他二进制数据。
NiFi的处理器包括如下三种输出:
您可以使用特殊的复选框,来删除那些已终止的输出。同时,您应该注意在高级ETL编程中的进程组(Process Groups),它们对于组合复杂的数据流元素来说是非常必需的。
NiFi的另一个实用功能是:可以采用不同的队列策略(包括FIFO、LIFO以及其他)。Data Provenance是一种用于记录数据流中几乎所有内容的连接服务。它可以便利地让您获悉数据的保存或执行方式。当然,该功能的唯一缺点是需要大量的磁盘空间。
虽然在我看来Apache NiFi的界面不但简洁清晰,而且可用性强,但是仍有不少用户抱怨其缺少必要的组件。例如,他们认为:由于缺少了自动调整各种长SQL查询的文本字段,因此只能通过手动来完成。
NiFi拥有内置的Node集群。您可以通过选择一些实例,来让它提取必要的ETL数据。另外,NiFi可以通过背压(back pressure)机制,来快速地连接MySQL,获取某个文件,并将其添加到下一个处理器上。
总而言之,Apache NiFi的主要优势在于拥有100多种不同的嵌入式处理器。它们能够通过HTTP、S3或Google Data Source来下载文件,并能将文件上传到MySQL、或其他数据接收器上。您只需配置UI,按下RUN按钮,后续它就能自动运行了。
2. Apache StreamSets
定价:免费
官方网站:https://streamsets.com
实用资源:文档,教程,开发者支持论坛,源代码
优点:
缺点:
Apache StreamSets可谓Apache NiFi的强有力竞争对手,我们很难说出谁更胜一筹。
根据流畅且通用的数据流格式的设计思想,所有被放入StreamSets的数据都会被自动转换为可交换的记录。与Apache Nifi不同的是,该ETL工具并不显示处理器之间的队列。如果您想使用其他不同的格式,Apache Nifi通常需要从一个版本的处理器转换为另一个版本。而StreamSets则不然,您需要为设置的更改停止整个数据流,而不仅仅停止某一个处理器。
在StreamSets中,虽然对于错误的修复看似困难,但事实上,由于它提供实时的调试工具,因此用户反而更容易实现错误的修复。借助具有实时仪表板和显示所有统计信息的友好用户界面,您可以快速地发现并修复任何出现的错误。此外,您还可以在处理器之间的连接处,放置各种具有记录功能的过滤器,以检查不同可疑的记录。因此,它具有如下四种处理器的变体:
StreamSets的各种处理器可以生成包括错误在内的动作和事件。您需要executors,来跟踪和修复这些错误。虽然那些只用到Processors和Controller Services的用户会更喜欢Apache NiFi的简约设计。但是,StreamSets也有着规划合理的架构。凭借着友好的用户界面,它也并不那么难以上手。
我个人感觉:由于缺少了针对JDBC设置的Controller Services,因此在调整每一个处理器时,都会让人觉得有些棘手。
StreamSets会在运行数据流之前检查所有的处理器,即:在数据流启动之前,必须确保所有处理器的连接。该功能会导致StreamSets不允许用户留下任何暂未连接、以备将来修复错误的处理器。StreamSets的另一个缺点是:无法让用户同时选择多个处理器。毕竟,逐一移动并重组多个处理器,会耗费大量的时间和精力。
总而言之,作为一款成熟的开源ETL工具,它提供了便捷的可视化数据流和时尚的Web界面。
3. Apache Airflow
定价 :免费
官方网站:https://airflow.apache.org
实用资源:教程
优点:
缺点:
这是一种被用于创建与跟踪工作流的开源式ETL软件。它可以与包括GCP、Azure和AWS在内的云服务一起使用。同时,您可以在Kubernetes上通过Astronomer Enterprise来运行Airflow。
在使用Python来编写工作流代码时,您不必担心XML或GUI拖放等问题,这些步骤具有一定的智能性。作为一款灵活的任务调度程序,Airflow可以被用在许多API之中,以实现训练ML模型、发送通知、跟踪系统、以及增强函数等目的。
该平台具有如下主要特点:
开发者可以用Apache Airflow来创建dynamic、extensible、elegant和scalable四种解决方案。因此,它通过Python代码提供了动态管道的生成。同时,您还可以自定义运算符和执行程序,以及按需扩展的抽象库。由于相关参数已被包含在平台的核心里,因此它能够创建出各种清晰准确的管道。此外,模块化与消息队列式的设计,也让Airflow更容易实现按需扩展。
Apache Airflow适用于大多数日常任务,包括:运行ETL作业和ML管道,提供数据和完成数据库备份。但是,对于流式作业来说,这并不是一个很好的选择。
该平台具有可视化元素的时尚UI。您可以查看所有正在运行的管道,跟踪进度并修复错误。这些都有助于用户完成DAG上的复杂任务。
虽然该结构比ETL数据库更具动态性,但是它能够提供稳定的工作流。因此,如果您将工作流定义为代码的话,它们将更具有协作性、可版本化、可测试性和可维护性。
该平台可运行在私有的Kubernetes集群中,并包含各种资源管理与分析工具,例如:StatsD、Prometheus和Grafana。
您可以使用如下的Airflow工作流,来进行ETL测试:
上述***种类型适用于检查DAG的加载、Python运算符函数、各种自定义运算符和Bash/EMR脚本。该平台不需要任何原始配置,其唯一需要更改的地方是:DB连接字符串。您需要创建一个空的数据库,并授予用户CREATE/ALTER的权限。剩下的就可以交给Airflow去完成了。
总而言之,Apache Airflow是一款由Python编写的免费独立框架。如果您想单独运行Airflow的话,则会面临一些挑战,因此您***使用一些不同的运算符。
4. AWS Data Pipeline
定价:不定,请参见https://aws.amazon.com/datapipeline/pricing/
官方网站:https://aws.amazon.com/datapipeline/
实用资源:文档,社区论坛
优点:
缺点:
该Web服务确保了数据在AWS计算资源和各种数据源之间的处理和移动。它能够对已存储的数据提供***的访问与转换。其最终结果也可以被转移到诸如:Amazon DynamoDB、Amazon RDS、Amazon EMR和Amazon S3等服务之中。该ETL工具简化了创建复杂数据处理负载的相关过程,有助于实现可重复、高可用且可靠的用例负载(case-load)。
AWS Data Pipeline能够移动和处理那些被锁在本地数据孤岛中的数据。Amazon号称其ETL工具有如下六项主要优势:
AWS Data Pipeline是一种可靠的服务,它能够在发生故障时,自动对各种活动进程进行重试。通过配置,您可以通过Amazon SNS接收到运行成功、延时或失败等通知。
您还可以通过拖放控制台,来简单快速地设计各种管道。其内置的预置条件,省去了您通过额外编写逻辑去调用它们。Web开发人员可能会用到的功能包括:调度、依赖关系跟踪和问题处理。同时,该服务也被灵活地设计为能够流畅地处理大量文件。
AWS Data Pipeline是一种无服务器式的编排服务,因此您只需为自己所使用的内容付费。同时,它为新用户提供了免费的试用版。通过该透明式方案,用户能够接收与管道相关的完整信息,并完全控制各种计算资源。
这款ETL工具很适合于执行各种管道作业。我在当前的项目中就使用它来传输各种数据。虽然AWS Data Pipeline没有丰富的内置函数,但是它提供了便捷的UI和内置了多种处理器的实用工具。用户可以用它来生成各种实例,并实现级联式的文件管理。
5. AWS Glue
定价:不定,请参见https://aws.amazon.com/glue/pricing/
官方网站:https://aws.amazon.com/glue/
实用资源:教程
优点:
缺点:
AWS Glue允许您在AWS管理控制台中创建和运行一项ETL作业。该服务能够从AWS中获取各种数据和元数据,并通过放入相应的类目,以供ETL进行搜索、查询和使用。整个过程分为如下三个步骤:
这款ETL工具具有如下三个主要优点:
虽然AWS Glue是AWS生态系统中的重要组成部分,但是您应该注意它的细微差别。该服务能够提供抽象级别的CSV文件。不过,您需要通过大量的手工操作,才能最终生成可运行的Spark代码。您可以在Scala或Python中下载相应的代码,并按需进行各种修改。虽然它适用于大量的数据源,但是该服务会最终强制您选取某一种特定的方案。而且您无法在后续的使用中,再去改用其他方式。
如何选择正确的ETL工具
InfoWorld曾断言:在构建数据仓库系统的方面,ETL的成本占比***。用户需要特别关注由它所产生的瓶颈。因此,只有恰当地实施ETL,才能优化企业的成本和加快员工的工作效率。***,我为您列出如下五个方面,供您在选用ETL工具时进行参考:
网页题目:比较五款企业级ETL工具,助你选出适合项目的解决方案
本文地址:http://www.36103.cn/qtweb/news47/32147.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联