数据工程是一项关键性的工作,数据工程师构建和维护对业务运营至关重要的大型数据库,数据科学家和数据分析师依靠这项工作来找到正确的数据并对其进行有效的分析。
对于任何规模的组织来说,数据工程师技能对长期生存都是至关重要的。
如果你准备好成为一名数据工程师,这有一些需要记住和学习的关键事情以及核心技能。首先,你需要了解数据工程这一大伞下的许多专业。有些更侧重于IT,例如管理和运行分布在整个云平台上的数据库系统。有些则更面向专注于编写集成数据应用程序的开发人员。
数据工程师还可以帮助数据科学家检索、分析甚至呈现数据。考虑到这一点,让我们逐一介绍成为一名有效的数据工程师所需的技能。
学习编程语言
首先,你必须精通至少一种编程语言。对于数据工程,最常见的三种是:
- Python (https://insights.dice.com/2022/10/31/how-to-become-a-python-developer/)
- Java(https://insights.dice.com/2022/07/06/java-certifications-everything-you-need-to-know-about-obtaining-them/)
- Scala
Python最常用。因此,你需要学习Python的许多可用的计算和数据库,例如:
- Numpy:(https://numpy.org/)用于数值计算和分析的高级库,包括许多高级数学功能,如矩阵、线性代数(如果你对广义相对论(https://en.wikipedia.org/wiki/Mathematics_of_general_relativity#Tensors_in_general_relativity)感兴趣的话,甚至还有张量)。
- Pandas:(https://pandas.pydata.org/)用于数据分析和操作。
数据查询
作为一名数据工程师,无论是数百条数据还是数十亿条数据,你都要从根本上了解数据是如何存储和管理的。从小的做起。在自己计算机的小型MySQL数据库。(https://www.w3schools.com/MySQL/default.asp)上,学习如何存储数据;如何管理数据及其索引;如何用SQL查询数据;以及如何创建视图和存储过程。学习如何分组和汇总数据,如总和、平均值等。
然后,学习如何在NoSQL数据库(如MongoDB)(https://www.mongodb.com/docs/manual/tutorial/)中执行同样的操作。与MySQL相比,MongoDB使用了完全不同的数据存储方式。了解MySQL使用的关系表与MongoDB使用的集合之间的区别。了解如何使用聚合转换数据。
对于这两个系统,你至少也要熟悉IT概念,例如副本集是什么以及数据是如何分片的。作为一名数据工程师,你可能不是管理这项工作的人(取决于你的团队和公司),但能知道发生什么再好不过了。
然后转向面向“大数据”(https://www.dice.com/jobs/q-Big+data-jobs)的大系统。这里的例子包括Google Datastore(https://cloud.google.com/datastore)和AWS DynamoDB(https://aws.amazon.com/dynamodb/)。
数据分析和统计
数据工程远远超出了简单的查询。无论是否已经习惯于数据库中的select语句和联接,你都需要对统计数据和不同类型的数据分析有更深入的理解。你要研究数据分析和统计网站,甚至考虑买一本相关书籍。
IDE和平台
对于处于职业生涯任何阶段的数据工程师来说,熟悉工具和IDE是至关重要。一个重要的工具就是Jupyter Notebook,(https://jupyter.org/)
它在使用Python的数据工程师中很流行。Jupyter Notebook允许你以交互方式运行Python代码,并在代码旁边显示图表和简图。(远不止这些,但这只是一个简短的描述。)
数据可视化
数据可视化对数据工程师至关重要,尤其是那些与数据科学家合作生成分析、结果和演示文稿的工程师们。人们需要看到你所呈现的信息,而你缺少的就是他们能够轻松消化的信息。其中包括图表、曲线图、表格等。
首先,你需要学习不同类型的图表,如散点图、正态分布图、直方图、密度图等等;对于Python,这意味着学习如何使用一个叫Matplotlib的数学绘图库。(https://matplotlib.org/)
其他工具和概念
随着你在教育中的不断进步,你终会想探索更高级的话题,这些不是获得入门工作所必需的。相反,这些是更高级职位的典型话题:
- Hadoop:(https://hadoop.apache.org/)这套工具允许你跨多台物理计算机去管理文件。它为大数据系统奠定了基础。
- Spark:(https://spark.apache.org/)该数据分析引擎与Hadoop配合的很好。
- Hive:(https://hive.apache.org/)此数据仓库引擎建立在Hadoop之上,用于管理分散在多台物理计算机和驱动器上的大量数据。
- ETL:这是一个概念,而不是工具。数据工程师通常通过从多个资源中提取、组合、处理和转换数据来管理数据;然后从第一个数据库导出的数据结果再被加载到不同的数据库中。这个过程就被称为提取、转换和加载管道。
- MapReduce:(https://en.wikipedia.org/wiki/MapReduce)与ETL类似,这是一个从多个资源读取数据并将其“缩减”为一组较小数据的概念。
- Amazon Web Services EMR:(https://aws.amazon.com/emr/)这是AWS管理上述内容的一套工具,包括Hadoop、Spark和Hive。(小心使用这个,因为它可能会变得非常昂贵,当你在创建集群时,也意味着你正在创建多个服务器!)
结论
成为一名数据工程师绝非易事,这需要大量的训练。但是从事数据工程的人往往真的很享受这份工作。当涉及到获取新技能时,慢慢来,保持耐心和练习,每个人都有需要学习的新东西。
作者:Jeff Cogswell