随着数据来源的日益增多,数据的产生量也在不断增加。因此,对这些数据的处理和存储变得越来越具有挑战性。新兴技术,如数据工程、人工智能和机器学习算法,帮助智能地处理这些数据,使它们能够满足商业需求。本文将重点介绍数据工程的步骤以及如何通过真实案例来执行这些步骤。数据工程的过程是使数据对数据驱动的工作可用和可访问,这可以通过ETL(提取、转换和加载)管道来实现。
数据工程的第一步是从各种来源提取数据,如物联网设备、定期上传的视频批次或医疗报告等。数据可以是任何类型,但目标是可靠地获取数据并进行处理。
提取数据后,对数据进行预处理,将其转换为所需的格式。因为来自不同来源的数据并不总是适合查询和分析。因此,修改它,使其更适合。在ETL管道的转换阶段,通常执行以下步骤:
规范化数据有助于使其对用户更易于访问。这也可以通过以下三个主要步骤实现:
还可以添加更多步骤,但这些是数据规范化中涉及的主要步骤。然后,数据清理与数据规范化相关,但主要区别在于数据清理包括一些使数据更统一和完整的步骤,而数据规范化只关注使异构数据适应某些数据模型。以下是数据清理中涉及的一些主要步骤:
完成转换后,ETL管道的下一步是加载。在这里,将转换后的数据存储在特定位置,并以指定格式存储,以便于用户更好地访问。这些修改后的数据通常存储在数据湖和数据仓库中。数据湖在提取后立即存储原始数据。它为数据处理提供了高度的灵活性,因为它不受数据仓库固定配置的限制。此外,未经处理的数据将被数据科学家用于进行探索性数据分析。
另一方面,数据仓库是一个中央存储库,其中存储的数据以可查询的形式存在。数据仓库能够存储结构化和非结构化数据,包括各种文件格式,如PDF、图像、音频和视频文件。
如今,数据工程师主要使用Lambda架构来处理实时数据。Lambda架构(LA)有助于支持统一管道和实时数据处理。LA基于三层设计(批量层、服务层和速度层),有助于基于批量处理或流处理方法以混合方式处理实时数据。
由于数据工程领域的显著增长,对工程师在传统批量处理方法上的工作需求很大。如今,许多组织都在遵循多个批量处理,而一些组织开始在流数据处理管道上工作。这主要是因为流处理方法涉及的复杂性问题,使其按预期工作。这些复杂性问题随着强大且易于使用的框架的引入,如Apache Flink、Apache Spark等,已经得到克服。
让考虑一个实时场景,以更好地理解数据工程领域。例如,考虑一个拥有数百万用户的付费网站提供商,他们登录并使用他们的账户中的服务,如Netflix、Amazon Prime等。但如果来自不同国家/地区的多个用户使用相同的账户和密码,这将导致提供服务的公司遭受巨大损失。因此,该公司希望避免这种欺诈行为,并且还要跟踪用户行为,如登录-注销、购买、创建和删除账户、设置更改等。
提出的系统使用以下方式处理数据:
Apache Kafka – 一个连接的机器群,也称为分布式流处理平台。
Apache Flink – 一个分布式处理引擎,有助于数据的状态处理。
Apache Kafka有助于从各种来源接收数据并可靠地存储它,还允许不同的应用程序以接收数据的顺序读取数据。Apache Flink将从Apache Kafka主题读取事件,处理过程是识别欺诈账户和用户行为日志记录。
欺诈账户检测:可以根据账户登录历史记录将账户视为欺诈账户。在监控登录活动时需要考虑以下两件事: