在您准备提升数据工程技能之际,让我们花些时间巩固本入门课程所涵盖的基础知识。在学习更进阶的内容之前,扎实掌握这些基本功非常必要。数据工程的作用与范畴我们首先定义了数据工程:它是一门专注于构建和维护系统与基础设施的学科,旨在使组织能够高效、可靠地收集、存储、处理和分析数据。您了解到,数据工程师是数据系统的设计者,负责确保数据对下游使用者(如数据科学家、分析师和机器学习应用)而言是可获取、可用且安全的。我们区分了数据工程与其他相关专业:数据分析师 侧重于解释数据以发现信息并解答业务问题,常使用SQL和BI平台等工具。数据科学家 开发模型和算法以进行预测或分类,这需要扎实的统计和编程技能。数据工程师 构建支持分析师和科学家的基础设施,侧重于数据流、存储和处理系统。了解数据生命周期也很重要。数据通常会经历几个阶段:生成、收集、存储、处理、分析,有时还会归档或删除。数据工程师在生命周期的大部分阶段都扮演着重要角色,尤其是在收集、存储和处理环节。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="Arial", fontsize=10, color="#495057", fillcolor="#e9ecef", style="filled,rounded"]; edge [fontname="Arial", fontsize=10, color="#495057"]; Gen [label="生成"]; Coll [label="收集"]; Store [label="存储"]; Proc [label="处理"]; Anal [label="分析"]; Use [label="使用/行动"]; Gen -> Coll [label=" 原始数据"]; Coll -> Store [label=" 摄入"]; Store -> Proc [label=" 检索"]; Proc -> Store [label=" 精炼数据"]; Store -> Anal [label=" 查询"]; Anal -> Use [label=" 信息"]; }数据生命周期阶段的简化视图,从最初的生成到可操作的信息。数据基础知识接下来,我们审视了这些基本组成部分:数据类型:我们将数据分为结构化(如关系数据库中的表)、半结构化(如JSON或XML)和非结构化(如文本文档或图像)。识别这些类型有助于选择合适的存储和处理工具。数据源:数据来自各种地方,包括数据库、应用程序日志、物联网设备、用户交互和第三方API。数据工程师需要方法从这些不同来源收集数据。存储系统:我们介绍了不同的存储模式:数据库:主要包括用于结构化数据和需要强一致性的关系型(SQL)数据库,以及用于灵活架构、可扩展性和不同数据模型(键值、文档、列族、图)的NoSQL数据库。数据仓库:针对分析查询和报告进行了优化,通常存储结构化的历史数据。数据湖:旨在存储海量各种格式的原始数据,为将来的分析提供了灵活性。API:应用程序编程接口被介绍为一种从外部服务或内部微服务以编程方式获取数据的常见方式。数据管道:数据的移动与转换数据工程师的一项主要工作是构建数据管道,它能够自动化数据从源到目标位置的移动和转换。我们考察了两种常见模式:ETL(提取、转换、加载):数据从源中提取,在单独的处理阶段转换为所需格式或结构,然后加载到目标系统(通常是数据仓库)。ELT(提取、加载、转换):数据被提取并直接加载到目标系统(通常是数据湖或现代数据仓库),初始处理量很少。转换则在加载之后进行,利用目标系统的计算能力。我们提到了提取(查询数据库、调用API)、转换(清洗、过滤、聚合、连接)以及将数据加载到存储系统中的基本技术。同时,也介绍了管道编排的理念,即调度和管理这些管道运行。数据存储实践基于数据存储的基本知识,我们更详细地查看了实际方面:存储选择:数据结构、容量、速度、访问模式和一致性要求等因素影响着在关系数据库、NoSQL数据库、数据仓库、数据湖、文件系统和对象存储之间的选择。关系数据库与SQL:我们强调了SQL(结构化查询语言)在与关系数据库交互方面的重要性——查询、插入、更新和删除数据。NoSQL类型:我们指出了存在适合不同需求的各种NoSQL类型。分布式文件系统:提到了像HDFS(Hadoop分布式文件系统)这样的系统是跨机器集群存储大型数据集的构建方式。对象存储:像Amazon S3这样的服务为非结构化和半结构化数据提供了可扩展、持久的存储,常作为数据湖的依据。数据格式:回顾了常见的格式,如CSV(逗号分隔值)、JSON(JavaScript对象表示法)和Parquet(一种高效用于分析的列式存储格式)。数据处理方法数据如何处理在很大程度上取决于需求。我们对比了两种主要方法:批处理:处理在一段时间内(例如,每小时、每天)收集的大量数据。适用于不需要实时结果的任务,例如生成每日报告或训练大型机器学习模型。流处理:数据到达时连续处理,通常在毫秒或秒级别。用于实时分析、监控和警报。我们简要提到了提供批处理和流处理工具的框架(如Apache Spark),以及为这些任务提供足够计算资源(CPU、内存)的重要性。基本的数据清洗(处理缺失值、纠正错误)和数据验证(根据定义规则检查数据质量)被强调是处理管道中的必要步骤。工程必要工具最后,我们概览了一些数据工程师工具箱中不可或缺的工具:SQL:再次提到,作为数据操作和跨各种系统查询的基本技能。Git:版本控制的标准,对于管理代码(管道定义、脚本)、跟踪更改以及与他人协作非常重要。命令行界面(CLI):对于与服务器交互、管理文件、运行脚本以及使用各种数据工程工具很必要。云平台:简要概述了主要提供商(AWS、Google Cloud、Microsoft Azure)及其用于数据库、存储、处理和编排的托管服务,这些服务在现代数据工程中越来越重要。工作流调度器:像Apache Airflow或Prefect这样的工具帮助定义、调度和监控复杂的数据工作流或管道。本课程旨在为您提供对这些核心内容的扎实理解。我们涉及的每个主题本身都代表了一个研究方向,但具备这些知识后,您已做好充分准备,可以更详细地研究特定方面并着手本章中概述的下一步工作。