ETL之apache hop系列1-ETL概念与hop简介
阅读原文时间:2023年08月25日阅读:4

ETL 简单介绍

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。它的主要作用是将企业中分散、非完全结构化、标准不统一的各种数据,整合到一起,形成企业级统一数据仓库,为企业的分析决策提供有质量保证的数据源。

今天的组织拥有来自各种来源的结构化和非结构化数据,包括:

  • 来自在线支付和客户关系管理(CRM)系统的客户数据
  • 来自供应商系统的库存和运营数据
  • 来自物联网(IoT)设备的传感器数据
  • 来自社交媒体和客户反馈的营销数据
  • 来自内部人力资源系统的员工数据

通过应用提取、转换、加载(ETL)过程,可以以更易于分析的格式和结构准备单个原始数据集,从而产生更有意义的见解。例如,在线零售商可以分析来自销售点的数据来预测需求和管理库存。营销团队可以将 CRM 数据与社交媒体上的客户反馈相结合,以研究使用器行为。

提取、转换、加载(ETL)通过使流程更加可靠、准确、详细和高效来改进商业智能和分析。

历史背景

ETL 为组织的数据提供了深刻的历史背景。企业可以将遗留数据与来自新平台和应用程序的数据相结合。您可以查看较旧的数据集以及较新的信息,从而为您提供长期的数据视图。

合并数据视图

ETL 提供统一的数据视图,以便进行深入分析和报告。管理多个数据集需要时间和协调,并可能导致效率低下和延迟。ETL 会将数据库和各种形式的数据整合到一个统一的视图中。数据集成过程提高了数据质量并节省了移动、分类或标准化数据所需的时间。这使得分析、可视化和理解大型数据集变得更加容易。

准确的数据分析

ETL 提供更准确的数据分析,以满足合规性和监管标准。您可以将 ETL 工具与数据质量工具集成,对数据进行剖析、审计和清理,确保数据可信。

任务自动化

ETL 会自动执行可重复的数据处理任务以进行高效分析。ETL 工具会自动执行数据迁移过程,您可以将它们设置为定期,甚至在运行时集成数据更改。因此,数据工程师可以将更多时间用于创新,并减少在管理繁琐的任务(例如移动和格式化数据)上花费的时间。

提取、转换、加载(ETL)起源于关系数据库的出现,该数据库以表格的形式存储数据以供分析。早期的 ETL 工具试图将数据从事务数据格式转换为关系数据格式以进行分析。

传统 ETL

原始数据通常存储在支持许多读写请求但不能很好地用于分析的交易数据库中。您可以将其视为电子表格中的一行。例如,在电子商务系统中,交易数据库将购买的商品、客户详细信息和订单详细信息存储在一次交易中。在这一年中,它包含了一个长长的交易清单,其中包含同一客户在一年中购买了多件商品的重复条目。由于数据重复,分析当年最受欢迎的商品或购买趋势变得很麻烦。

为了克服这个问题,ETL 工具自动将此交易数据转换为具有互连表格的关系数据。除了模式和趋势之外,分析师还可以使用查询来识别表之间的关系。

现代 ETL

随着 ETL 技术的发展,数据类型和数据来源都呈指数级增长。云技术的出现是为了创建庞大的数据库(也称为数据接收器)。此类数据接收器可以从多个来源接收数据,并具有可以随时间扩展的底层硬件资源。ETL 工具也变得更加复杂,可以与现代数据接收器一起使用。他们可以将数据从传统数据格式转换为现代数据格式。现代数据库的示例如下。

数据仓库

数据仓库是可以存储多个数据库的中央存储库。在每个数据库中,您可以将数据组织成表和描述表中数据类型的列。数据仓库软件适用于多种类型的存储硬件,例如固态驱动器(SSD)、硬盘驱动器和其他云存储,以优化您的数据处理。

数据湖

借助数据湖,您可以将结构化和非结构化数据以任意规模存储在一个集中式存储库中。您可以按原样存储数据,而不必首先根据您将来可能遇到的问题对其进行结构化。数据湖还让您可以对数据运行不同类型的分析(如 SQL 查询、大数据分析、全文搜索、实时分析和机器学习(ML)等)来获得更深入的见解。

提取、转换、加载(ETL)的工作是定期将数据从源系统移动到目标系统。ETL 过程分三个步骤:

  1. 从源数据库中提取相关数据
  2. 转换数据,使其更适合分析
  3. 将数据加载到目标数据库

简单来说:主要包含三大阶段,分别是数据抽取、数据转换、数据加载。

在数据提取中,提取、转换、加载(ETL)工具从多个来源提取或复制原始数据并将其存储在暂存区域中。暂存区(或登录区)是用于临时存储提取数据的中间存储区。数据暂存区通常是暂时的,这意味着它们的内容在数据提取完成后会被删除。但是,暂存区也可能会出于故障排除的目的而保留数据存档。

系统将数据从数据来源发送到目标数据存储的频率取决于底层变更数据捕获机制。数据提取通常通过以下三种方式之一进行。

更新通知

在更新通知中,源系统会在数据记录发生更改时通知您。然后,您可以针对该更改运行提取过程。大多数数据库和 Web 应用程序都提供更新机制来支持这种数据集成方法。

增量提取

某些数据来源无法提供更新通知,但可以识别和提取在给定时间段内经过修改的数据。在这种情况下,系统会定期检查更改,例如每周一次、每月一次或活动结束时。您只需要提取已更改的数据。

完全提取

某些系统无法识别数据更改或发出通知,因此重新加载所有数据是唯一的选择。这种提取方法要求您保留上次提取的副本以检查哪些记录是新的。由于此方法涉及大量数据传输,因此我们建议您仅将其用于小型表格。

在数据转换中,提取、转换、加载(ETL)工具将转换和整合暂存区域中的原始数据,为目标数据仓库做好准备。数据转换阶段可能涉及以下类型的数据更改。

基本数据转换

基本转换通过消除错误、清空数据字段或简化数据来提高数据质量。这些转换的示例如下。

数据清理

数据清理可消除错误并将源数据映射到目标数据格式。例如,您可以将空数据字段映射到数字 0,将数据值“Parent”映射到“P”,或将“Child”映射到“C”。

数据去重复

数据清理中的去重复将识别并删除重复记录。

数据格式修订

格式修订会将字符集、测量单位和日期/时间值等数据转换为一致的格式。例如,一家食品公司可能有不同的配方数据库,其成分以千克和磅为单位。ETL 会将所有单位转换为磅。

高级数据转换

高级转换使用业务规则来优化数据以便于分析。这些转换的示例如下。

推导

推导将业务规则应用于您的数据,以根据现有值计算新值。例如,您可以通过减去费用或通过将每件商品的价格乘以订购的商品数量来计算购买的总成本来将收入转换为利润。

联结

在数据准备中,联结将链接来自不同数据来源的相同数据。例如,您可以通过将不同供应商的采购价值相加,并仅将最终总计存储在目标系统中来找出某件物品的总采购成本。

拆分

您可以在目标系统中将列或数据属性划分为多个列。例如,如果数据来源将客户名称保存为“Jane John Doe”,您可以将其拆分为名字、中间名和姓氏。

汇总

汇总通过将大量数据值减少到较小的数据集中来提高数据质量。例如,客户订单发票值可以有许多不同的小金额。您可以通过将给定时间段内的数据相加来汇总数据,以构建客户生命周期价值(CLV)指标。

加密

您可以通过在数据流到目标数据库之前添加加密来保护敏感数据,以遵守数据法律或数据隐私。

在数据加载中,提取、转换、加载(ETL)工具会将转换后的数据从暂存区移动到目标数据仓库。对于大多数使用 ETL 的组织来说,该过程是自动化的、定义明确的、连续的和批处理驱动的。下面是两种加载数据的方法。

完全加载

在完全加载时,来自源的全部数据被转换并移动到数据仓库。完全加载通常发生在您第一次将数据从源系统加载到数据仓库中时。

增量加载

在增量加载中,ETL 工具会定期加载目标系统和源系统之间的增量(或差异)。它会存储最后提取日期,以便仅加载在此日期之后添加的记录。有两种方法可以实现增量加载。

流式增量加载

如果您的数据量较小,您可以通过数据管道将持续更改流式传输到目标数据仓库。当数据速度增加到每秒数百万个事件时,您可以使用事件流处理来监控和处理数据流,从而更及时地做出决策。

批量增量加载

如果您的数据量很大,您可以定期分批收集将负载数据更改。在此设定的时间段内,由于数据同步,源系统或目标系统都不会发生任何操作。

提取、加载、转换(ELT)是提取、转换、加载(ETL)的扩展,它颠倒了操作的顺序。您可以在处理数据之前将数据直接加载到目标系统中。不需要中间暂存区,因为目标数据仓库中具有数据映射功能。随着云基础设施的采用,ELT 变得越来越流行,这为目标数据库提供了转换所需的处理能力。

ETL 与 ELT 的比较

ELT 适用于需要频繁加载的大容量、非结构化数据集。它也是大数据的理想选择,因为可以在数据提取和存储之后进行分析规划。它将大部分转换留给分析阶段,并专注于将经过最少处理的原始数据加载到数据仓库中。

ETL 过程在开始时需要更多的定义。分析需要从一开始就参与定义目标数据类型、结构和关系。数据科学家主要使用 ETL 将遗留数据库加载到仓库中,而 ELT 已成为当今的常态。

数据虚拟化使用软件抽象层来创建集成数据视图,而无需物理提取、转换或加载数据。组织将此功能用作虚拟统一数据存储库,无需为源和目标构建和管理单独平台的费用和复杂性。虽然您可以将数据虚拟化与提取、转换、加载(ETL)一起使用,但它越来越被视为 ETL 和其他物理数据集成方法的替代方法。例如,您可以使用 AWS Glue Elastic Views 从多个不同的源数据存储中快速创建虚拟表(物化视图)。

参考文档:

https://aws.amazon.com/cn/what-is/etl/

https://zhuanlan.zhihu.com/p/352337320

https://zhuanlan.zhihu.com/p/403670859

https://www.cnblogs.com/yjd_hycf_space/p/7772722.html

apache Hop 简单介绍

官方文档:https://hop.apache.org/

Apache Hop是Hop Orchestration Platform的缩写,是一个数据编排和数据工程平台,旨在促进数据和元数据编排的各个方面。Hop 可让您专注于您试图解决的问题,而不会受到技术的阻碍。简单的任务应该是容易的,复杂的任务需要成为可能。

Hop 是一个开源数据集成工具,它是 Pentaho Data Integration (PDI) 或 Kettle 的一个分支(2019年晚期)。它提供了一种可视化开发工具,对于那些喜欢在不编写任何代码的情况下构建管道的人来说,它可以提高开发人员的工作效率并减少他们的畏惧。Hop 工作流(workflow)和管道(Pipeline)可以在各种引擎上运行,包括其自己的本机 Hop 引擎、Spark、Flink、Google Dataflow 或通过 Beam 的 AWS EMR。Hop 是最早用于构建 Apache Beam 管道的 GUI 的设计。

Hop GUI:是用于构建管道Pipeline(Kettle: 转换tranformation)和工作流workflow(Kettle作业job)的图形界面编辑器。它允许在不编写任何代码的情况下构建复杂的 ETL(提取转换和加载)作业。它提供了一个拖放界面,允许创作、编辑、运行或调试管道或工作流。

Hop Run:是一个独立的 CLI 实用程序,可用于执行管道和工作流。

Hop Server:是一个轻量级的 Web 容器,允许在远程服务器上执行管道和工作流。可以部署在多个服务器上。它还提供了一个 REST API 用来远程调用工作流和管道。

Hop Conf:是一个命令行工具,用于管理 Hop 配置的各个方面:项目、环境、云配置等

Hop Encrypt:是一个命令行工具,用于混淆或加密纯文本密码以用于 XML、密码或元数据文件。确保同时复制密码加密前缀以指示密码的混淆性质。然后,Hop将能够区分常规纯文本密码和混淆密码。

Hop Search:是一个命令行工具,用于搜索特定项目或环境中可用的所有元数据。

Hop Import:是一个命令行工具,用于将 PDI/Kettle 作业和转换导入到 Apache Hop 中。Hop Import所做的不仅仅是从作业到工作流和转换到管道的代码转换:数据库连接被转换为Apache Hop rdbms连接,变量被解析和导入,所有内容都捆绑到一个完整的Apache Hop项目中。

Hop Translator:是一个GUI工具,允许非技术用户用他们的母语翻译Hop。

Hop 中三个重要组件:Hop GUI、Hop Run、Hop Server

官方介绍:Hop Tools :: Apache Hop

到目前为止,元数据是所有 Hop 中最重要的概念。我们将在下面介绍的每个项目都定义为元数据。Hop 与数据架构中其他组件之间的所有交互都是通过元数据完成的。元数据是 Hop 中一切的核心。

管道是转换的集合,通过跃点连接。管道中的所有转换并行运行。

工作流是通过跃点连接的操作集合。默认情况下,工作流中的所有操作都按顺序运行。

项目是跃点代码和配置的逻辑集合。环境包含特定于环境的(例如dev,uat,prd)元数据。

官方介绍:Hop Concepts :: Apache Hop

安装apache Hop 在Windows环境下需要安装Java JDK11

官方介绍:Apache Hop requirements, installation and configuration :: Apache Hop

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章