当前位置: 首页 > 科技观察

比较五款企业级ETL工具,助你选出适合项目的解决方案

时间:2023-03-20 15:53:23 科技观察

比较五种企业级ETL工具,帮助您为项目选择合适的解决方案对数据仓库项目和高级分析系统的需求也在增加。这里的ETL对应了数据仓库的三个概念:Extracting、Transforming和Loading。其主要过程包括:从不同的外部来源提取数据。将数据转换为所需的业务模型。将数据加载到新仓库中。可以看出,ETL是整个数据迁移任务的一个子集。在一书中(详见https://www.amazon.com/Data-Warehouse-ETL-Toolkit-Techniques-Extracting/dp/0764567578),定义了ETL的三个基本特征:下载数据的格式和分析它。它包含很多附加信息。记录数据的来源。因此,数据不应简单地从一个地方加载到另一个地方,而应该在加载过程中进行改进和优化。例如:ETL开发人员可以添加新的技术属性来跟踪数据在数据库中的显示方式、数据更改的时间和方式。ETL过程步骤通常,Web程序员可以将ETL体系结构想象为三个区域,如下图所示:数据源。中间区域。数据接收器。数据流从源移动到接收器。由于每个阶段都非常复杂,创建ETL软件的过程通常包括以下不同的挑战:外部数据源的多样性。数据需要根据业务规则进行统一。更新频率和其他特定要求。因此,普通的IT企业需要清楚地了解数据源的结构,并配备相应的目标应用。ETL示例一项常见的ETL任务是将数据从关系数据库管理系统(RDBMS)传输到另一个更适合商业智能工具的数据库。因此,ELT作业可以分为两种类型:BatchjobsStreamjobs其中,streamjobs的一个例子是:从RDBMS中获取数据,一个一个地单独传输出来进行后期处理。否则,我们认为它属于批处理的范畴。例如:可以先获取整个文件,进行处理,最后保存成一个更大的文件。可以说,不同的ETL系统会以不同的方式处理上述任务。如今,单一批处理方法已经过时。流式数据源的不断增长导致各种ETL工具主要用于通过处理流式作业来尽快提供各种最新数据。同时,由于ETL可以成功地将数据集成到各种数据库和应用中,而各种云数据集成工具往往让我们难以做出选择,所以我在这里为大家列举并比较了五家企业的优缺点——级别的ETL工具,希望能帮助大家找到最适合手头项目的解决方案。1.ApacheNifi定价:免费官网:https://nifi.apache.org/实用资源:文档、教程。优点:完美实现了数据流的编程理念。能够处理二进制数据。提供数据源(DataProvenance)。缺点:用户界面过于简单。缺乏实时监控和个案统计。Apache软件基金会开发的一个开源项目——ApacheNiFi可谓是最流行的ETL工具之一。由于基于数据流的编程理念,它让我们几乎不用代码就可以直观地将各种程序组装成盒子并运行。此时,你根本不需要懂任何编程语言。作为流行的ETL工具,NiFi可以处理许多不同的数据源,包括:RabbitMQ、JDBC查询、Hadoop、MQTT和UDP套接字。在操作方面,您可以过滤、调整、合并、拆分、增强和验证数据。由于ApacheNiFi是用Java编写的,并在Apache2.0许可下发布,因此它不仅可以运行在JVM上,而且还支持所有JVM语言。这个ETL工具不仅可以帮助用户创建长时间运行(long-running)的作业,也适用于处理流式数据和一些周期性的批处理。然而,对于那些手动管理任务,用户在设置NiFi时可能会遇到一些麻烦。ApacheNiFi是一个功能强大且易于使用的解决方案。它采用综合架构模式,其FlowFile包含各种元信息。因此,该工具不仅可以识别CSV,还可以识别照片、视频、音频文件和其他二进制数据。NiFi的处理器包括以下三种输出:Failure:表示FlowFile在处理过程中出现了一些问题。Original:表示传入的FlowFile已经处理完毕。Success:表示对FlowFiles的处理已经完成。您可以使用特殊复选框来删除那些已终止的输出。另外,在高级ETL编程中要注意ProcessGroups,它们对于组成复杂的数据流元素是非常必要的。NiFi的另一个有用的特性是可以使用不同的排队策略(包括FIFO、LIFO等)。DataProvenance是一种连接服务,用于记录数据流中的几乎所有内容。它可以方便地让您知道数据是如何保存或执行的。当然,此功能的唯一缺点是它需要大量磁盘空间。虽然在我看来,ApacheNiFi的界面不仅简洁明了,而且易用性也很强,但还是有不少用户抱怨缺少必要的组件。例如,他们争辩说,由于缺少可自动适应各种长SQL查询的文本字段,这只能手动完成。NiFi有一个内置的Node集群。您可以通过选择一些实例让它提取必要的ETL数据。另外,NiFi可以通过背压机制快速连接MySQL,获取一个文件,添加到下一个处理器中。总而言之,ApacheNiFi的主要优势在于它拥有100多种不同的嵌入式处理器。他们可以通过HTTP、S3或Google数据源下载文件,并将文件上传到MySQL或其他数据接收器。你只需要配置好UI,按下RUN键,它就会自动运行。2.ApacheStreamSets定价:免费官网:https://streamsets.com实用资源:文档、教程、开发者支持论坛、源代码优点:每个处理器都有基于单条记录的统计,具有友好的可视化调试效果。用户界面非常友好。提供流式和基于记录的数据工具。缺点:缺少可重用的JDBC配置。更改单个处理器的设置后,需要停止整个数据流。ApacheStreamSets可谓是ApacheNiFi的有力竞争者,我们很难说谁更好。按照一种流畅通用的数据流格式的设计思想,所有放入StreamSets的数据都会自动转换为可交换的记录。与ApacheNifi不同,此ETL工具不显示处理器之间的队列。如果您想使用不同的格式,ApacheNifi通常需要从一种版本的处理器转换为另一种版本。StreamSets不是这种情况,您需要停止整个流以进行设置更改,而不仅仅是单个处理器。在StreamSets中,虽然修复错误看起来很难,但实际上,因为它提供了实时调试工具,用户更容易实现错误修复。通过具有实时仪表板和所有统计数据显示的友好用户界面,您可以快速发现并修复出现的任何错误。此外,您可以在处理器之间的连接处放置各种具有日志记录功能的过滤器,以检查不同的可疑日志。因此,它有以下四种处理器变体:来源:处理器从数据源接收信息。处理器:获取和转换接收到的数据。目的地:将转换后的数据放入各种外部文件中。执行者:处理由其他处理器完成的那些操作。StreamSet的各种处理程序可以生成操作和事件,包括错误。您需要执行者来跟踪和修复这些错误。虽然那些只使用Processors和ControllerServices的用户会更喜欢ApacheNiFi的简单设计。然而,StreamSets也有一个精心规划的架构。通过友好的用户界面,使用起来并不难。个人感觉:由于缺少了ControllerServicesforJDBC设置,所以会让人感觉每个processor的调整有点棘手。StreamSets在运行数据流之前会检查所有的处理器,即:在数据流开始之前,所有的处理器都必须连接。此功能导致StreamSet不允许用户让任何处理器处于未连接状态以便将来修复错误。StreamSets的另一个缺点是它不允许用户同时选择多个处理器。毕竟,一个一个地移动和重组多个处理器需要花费大量的时间和精力。总而言之,作为一个成熟的开源ETL工具,它提供了便捷的可视化数据流和时尚的Web界面。3.ApacheAirflow定价:免费官网:https://airflow.apache.org实用资源:教程优势:适用于不同类型的任务。具有清晰直观的用户界面。提供可扩展的解决方案。缺点:不适合流媒体工作。需要额外的操作员。这是一个用于创建和跟踪工作流的开源ETL软件。它适用于包括GCP、Azure和AWS在内的云服务。同时,您可以使用AstronomerEnterprise在Kubernetes上运行Airflow。使用Python编写工作流程代码时,您不必担心XML或GUI拖放之类的事情,这些步骤具有一定的智能性。Airflow作为一个灵活的任务调度器,可以在很多API中使用,以达到训练ML模型、发送通知、跟踪系统和增强功能的目的。该平台具有以下主要特点:Airflow-as-a-Service通过Qubole和astronomer.io提供。它由Airbnb于2015年创建,并于2016年转移到Apache。基于GoogleCloudComposer。工作流以有向无环图(DAG)的形式实现。开发人员可以使用ApacheAirflow创建四种解决方案:动态、可扩展、优雅和可扩展。因此,它通过Python代码提供动态管道生成。同时,您还可以自定义算子和执行器,以及可以按需扩展的抽象库。由于相关参数已经包含在平台的核心中,因此可以创建各种清晰而精确的管道。此外,模块化和消息队列的设计也让Airflow更容易按需扩展。ApacheAirflow适用于大多数日常任务,包括:运行ETL作业和ML管道、提供数据和完成数据库备份。但是,这不是流媒体作业的好选择。该平台有一个带有视觉元素的时尚用户界面。您可以查看所有正在运行的管道、跟踪进度和修复错误。这些都可以帮助用户在DAG上完成复杂的任务。虽然这种结构比ETL数据库更动态,但它提供了稳定的工作流。因此,如果将工作流定义为代码,它们将更具协作性、版本控制性、可测试性和可维护性。该平台可以运行在私有的Kubernetes集群中,包括各种资源管理和分析工具,例如:StatsD、Prometheus和Grafana。您可以使用以下Airflow工作流程进行ETL测试:单元测试集成测试端到端测试(在某些情况下)上面的第一种适用于检查DAG加载、Python运算符函数、各种自定义定义运算符和Bash/EMR脚本.该平台不需要任何原始配置,唯一需要更改的是:数据库连接字符串。您需要创建一个空数据库并授予用户CREATE/ALTER权限。剩下的可以交给Airflow来完成。总而言之,ApacheAirflow是一个用Python编写的免费独立框架。如果你想单独运行Airflow会有一些挑战,所以你最好使用一些不同的操作符。4.AWSDataPipeline定价:各不相同,详见https://aws.amazon.com/datapipeline/pricing/官网:https://aws.amazon.com/datapipeline/实用资源:文档、社区论坛优点:简单使用的ETL技术价格合理。柔韧性好。缺点:内置功能不多。Web服务确保AWS计算资源和各种数据源之间的数据处理和移动。它可以提供对存储数据的全面访问和转换。最终结果还可以传输到以下服务:AmazonDynamoDB、AmazonRDS、AmazonEMR和AmazonS3。此ETL工具简化了创建复杂数据处理工作负载的过程,有助于实现可重复、高度可用且可靠的案例负载。AWSDataPipeline可以移动和处理锁定在本地数据孤岛中的数据。亚马逊声称其ETL工具具有以下六大主要优势:准确性、简单性、适应性、合理的价格、可扩展性、透明性,AWSDataPipeline是一项可靠的服务,可以在发生故障时自动重试各种活动进程。通过配置,您可以通过AmazonSNS接收运行成功、延迟或失败等通知。您还可以通过拖放控制台简单快速地设计各种流水线。它内置的前提条件使您无需编写额外的逻辑来调用它们。Web开发人员可能会发现有用的功能包括:调度、依赖项跟踪和问题处理。同时,该服务设计灵活,可以顺利处理大量文件。AWSDataPipeline是一种无服务器编排服务,因此您只需为使用的资源付费。同时为新用户提供免费试用版。通过这种透明的方案,用户可以接收到与管道相关的完整信息,并完全控制各种计算资源。该ETL工具非常适合执行各种流水线作业。我用它来传输我当前项目中的各种数据。尽管AWSDataPipeline没有丰富的内置功能,但它为各种处理器提供了方便的UI和内置实用程序。用户可以使用它生成各种实例,实现级联文件管理。5、AWSGlue定价:不定,请参考https://aws.amazon.com/glue/pricing/官网:https://aws.amazon.com/glue/实用资源:教程优势:支持各种数据源.它与AWS的各种服务有很好的集成。缺点:需要大量的手动工作。柔韧性差。AWSGlue允许您在AWS管理控制台中创建和运行ETL作业。该服务可以从AWS获取各种数据和元数据,并将其归入相应的类别,供ETL搜索、查询和使用。整个过程分为以下三个步骤:通过构建类别(包括JSON、CSV、Parquet等多种格式)对数据进行分类。生成ETL代码和各种编辑转换(可以用Scala或Python编写)。安排和运行各种ETL作业。这个ETL工具主要有以下三个优点:方便:因为它可以和很多AWS服务和引擎紧密集成,所以这个工具对于已经使用过亚马逊产品的用户来说非常容易上手。但是,缺点是您无法在本地或任何其他云环境中执行此操作。经济实惠:无服务器解决方案意味着您无需配置或管理任何基础设施。因此,其成本取决于各个“数据处理单元”的开销。您只需为正在运行的作业付费。功能强大:可以自动创建、维护和运行各种ETL作业。当然,这项服务也需要大量的人工工作。虽然AWSGlue是AWS生态系统的重要组成部分,但您应该注意一些细微差别。该服务能够提供抽象级别的CSV文件。但是,您需要经过大量的手工工作才能最终生成可运行的Spark代码。您可以下载相应的Scala或Python代码,根据需要进行各种修改。虽然它适用于大量数据源,但该服务最终会迫使您选择一个特定的方案。并且在后续使用中不能切换到其他方法。如何选择合适的ETL工具InfoWorld曾断言:在构建数据仓库系统方面,ETL占了最大的成本。用户需要特别注意它造成的瓶颈。因此,只有正确实施ETL,才能优化企业的成本,加快员工的工作效率。***,我会列出以下五个方面,供大家在选择ETL工具时参考:系统复杂度。您的数据请求。开发者经验。ETL的技术成本。特殊业务需求。原标题:Top5EnterpriseETLTools,作者:VitaliySamofal