随着大量数据从多种来源涌入,数据工程已成为数据生态系统中的重要组成部分。组织机构正在寻求建立和扩展数据工程师团队。
一些数据角色,例如分析师,并不一定需要在该领域有先前经验,只要您具备扎实的SQL和编程技能即可。然而,要进入数据工程领域,之前的数据分析或软件工程经验通常是有帮助的。
因此,如果您想在数据工程领域追求职业生涯,本指南就是为您提供以下信息的:
- 了解更多关于数据工程和数据工程师角色的信息,以及
- 熟悉基本的数据工程概念。
什么是数据工程?
在我们讨论数据工程的具体内容之前,回顾一下数据工程的需求将会有所帮助。如果您在数据领域有一段时间,您将熟练使用SQL查询关系数据库和类SQL语言查询NoSQL数据库。
但是数据是如何到达那里的 – 准备进行进一步的分析和报告的?这就是数据工程。
我们知道数据来自各种来源,具有多种形式:包括来自遗留数据库的数据,用户对话和物联网设备。原始数据必须被提取到数据存储库中。更具体地说,来自各种资源的数据应该在进入数据存储库之前被提取和处理,以便以可用于分析和其他应用的形式提供。
数据工程涵盖了从各种资源中收集和整合原始数据的所有过程 – 这些数据被统一和可访问的数据存储库中,可用于分析和其他应用。
数据工程师的工作内容
了解到数据工程的定义肯定有助于您猜测数据工程师在日常工作中做些什么。数据工程师的职责包括但不限于以下内容:
- 从各种来源提取和整合数据 – 数据收集。
- 为分析准备数据:通过应用适当的转换处理数据,以准备数据进行分析和其他下游任务。包括数据清洗、验证和转换。
- 设计、构建和维护数据流水线,涵盖数据从源头到目的地的流动。
- 设计和维护用于数据收集、处理和存储的基础设施 – 基础设施管理。
数据工程概念
现在我们已经了解了数据工程的重要性以及数据工程师在组织中的角色,是时候复习一些基本概念了。
数据来源和类型
如前所述,我们从光谱上的所有资源获得传入数据:从关系数据库和网页抓取到新闻订阅和用户聊天。来自这些来源的数据可以分为以下三个广泛的类别之一:
- 结构化数据
- 半结构化数据
- 非结构化数据
以下是一个概述:
类型 | 特点 | 示例 |
结构化数据 | 具有明确定义的模式。 | 关系数据库中的数据、电子表格等 |
半结构化数据 | 具有一定结构但没有严格的模式。通常具有提供额外信息的元数据标签。 | 包括JSON和XML数据、电子邮件、压缩文件等 |
非结构化数据 | 没有明确定义的模式。 | 图像、视频和其他多媒体文件、网站数据 |
数据仓库:数据仓库、数据湖和数据集市
从各种来源收集的原始数据应该被暂存到一个合适的仓库中。您应该已经熟悉数据库——关系型和非关系型数据库。但是还有其他的数据仓库。
在我们介绍它们之前,了解两个数据处理系统将有所帮助,它们是OLTP系统和OLAP系统:
- OLTP 或在线事务处理系统用于存储日常运营数据,例如库存管理。OLTP系统包括存储可用于分析和获取业务洞察的数据的关系型数据库。
- OLAP 或在线分析处理系统用于存储大量的历史数据以进行复杂的分析。除了数据库,OLAP系统还包括数据仓库和数据湖(稍后会详细介绍)。
数据仓库的选择通常取决于数据的来源和类型。让我们来看看常见的数据仓库:
- 数据仓库:数据仓库指的是一个全面的存储数据的地方。
- 数据湖:数据湖允许以原始格式存储所有数据类型,包括半结构化和非结构化数据。数据湖通常是ELT过程的目标(我们即将讨论)。
- 数据集市:您可以将数据集市视为数据仓库的一个较小的子部分,为特定的业务用例量身定制
- 数据湖仓库:最近,数据湖仓库也越来越受欢迎,因为它们既具有数据湖的灵活性,又提供了数据仓库的结构和组织。
数据管道:ETL和ELT过程
数据管道涵盖了数据的旅程——从源系统到目标系统——通过ETL和ELT过程。
ETL——抽取、转换和加载——过程包括以下步骤:
- 从各种来源提取数据
- 转换数据——清理、验证和标准化数据
- 将数据加载到数据仓库或目标应用程序中
ETL过程通常将数据仓库作为目标。
ELT——抽取、加载和转换——是ETL过程的一种变体,其中步骤的顺序为:抽取、加载和转换。
这意味着从源系统中收集的原始数据在应用任何转换之前加载到数据仓库中。这使我们能够应用特定于特定应用程序的转换。ELT过程的目标是数据湖。
数据工程师应该了解的工具
数据工程师应该了解的工具列表可能会让人感到压倒性。
但是不要担心,您不需要精通所有这些工具才能成为一名数据工程师。在我们列出数据工程师应该了解的各种工具之前,重要的是要注意,数据工程需要一系列广泛的基础技能,包括以下内容:
- 编程语言:熟练掌握一种编程语言,最好是Python、Scala和Java中的一种
- 数据库和SQL:对数据库设计有很好的理解,并能够使用关系型数据库(如MySQL和PostgreSQL)和非关系型数据库(如MongoDB)
- 命令行基础知识:熟悉Shell脚本、数据处理和命令行
- 操作系统和网络知识
- 数据仓库基础知识
- 分布式系统基础知识
在学习基础技能的同时,一定要建立能够展示您能力的项目。没有什么比学习、将所学知识应用到项目中并在其中学到更多的东西更有效果!
此外,数据工程还需要强大的软件工程技能,包括版本控制、日志记录和应用程序监控。您还应该知道如何使用Docker等容器化工具和Kubernetes等容器编排工具。
尽管您使用的实际工具可能因组织而异,但学习以下内容会很有帮助:
- 用于分析工程的dbt(数据构建工具)
- 用于大数据分析和分布式数据处理的Apache Spark
- 用于数据管道编排的Airflow
- 云计算的基础知识,并至少使用一个云服务提供商,如AWS或Microsoft Azure。
要了解更多有关工程工具,包括数据仓库和流处理工具,请阅读:10 种现代数据工程工具。
总结
希望您觉得这份关于数据工程的介绍有用!如果您对在大规模上设计、构建和维护数据系统感兴趣,那么一定要尝试数据工程。
数据工程 zoomcamp 是一个很好的起点——如果您正在寻找一个以项目为基础的课程来学习数据工程。您还可以阅读常见的数据工程师面试问题列表,以了解您需要了解的内容。
Bala Priya C 是来自印度的开发人员和技术作家。她喜欢在数学、编程、数据科学和内容创作的交叉点上工作。她的兴趣和专长领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和咖啡!目前,她正在通过撰写教程、操作指南、观点文章等,与开发者社区学习和分享她的知识。