数据工程师最近今年可谓是炙手可热。根据 hired.com 发布的数据,2019 年该岗位 需求量已上涨 45%,在旧金山湾区,数据工程师的平均工资可达 16,000 美刀。那么,成为一名合格的数据工程师要满足什么条件呢?
数据工程师的工作
数据工程师的工作与数据息息相关,这一点光是从名字上就可窥见一二。与从已有数据中提炼信息的数据分析师不同,数据工程师要做的是搭建用于传递、存储和处理信息的架构,负责数据的收集、转移、存储,以及数据准备工作。根据 AI 行业的需求金字塔,这些任务都是处于塔的最底层。也就是说,如果一家企业的业务是基于数据或者 AI 的话,那么数据工程师的雇佣和培训应当是必要的。
每一天都会有无数的数据生成,人们时时刻刻都可以通过手机等随身携带的设备,通过联网产出各种内容。在过去,数据工程师们需要通过利用 Informatica、Pentaho、Talend 等科技大厂发行的工具编写复杂的 SQL 查询命令,搭建 ETL(抽取 Extract、转换 Transform、加载 Load)流程。当今市场对数据工程师的技能需求则变得更加宽泛,需要至少满足以下条件:
掌握 SQL、Python 知识
有在工作中使用云服务提供商 AWS、Azure 或者 GCP 提供的服务的经验
熟悉 Java/Scala 是大加分项
熟悉 SQL/NoSQL 数据库(数据建模、数据仓库、性能优化)
可以看出,数据工程师在专业技能方面的需求与一般的后端工程师非常类似。事实上,如果一家企业在数据量方面一直呈增长趋势的话,后端工程师转职数据工程师是个不错的选择。
数据工程师在具体的技能方面也因公司规模、数据量和数据速度的不同而异。以 FAANG(Facebook、亚马逊、苹果、网飞、谷歌的统称)为例,他们通常需要员工满足:
掌握 Python、Java 或 Scala 知识
有使用 Apache Hadoop,Kafka 以及 Spark 等大数据工具的工作经验
深入理解常用算法和数据结构
熟悉分布式系统
有使用商业智能工具 Tableau、QlikView、Looker 或者 Superset 等工具的开发经验
数据工程师的工作
数据工程师每天的主要工作就是和数据打交道,熟悉数据库工作原理会让你的工作变得更轻松。数据工程作为工程的一大分支领域,意味着你需要在编程方面,尤其是常用算法和数据结构,有一定的知识。举例来说,常见 SQL 数据库 SQLite、PostgreSQL、MySQL 背后的数据结构都是 B-Tree。
算法与数据结构
这方面的视频课程有很多,比较推荐的有 Coursea 上的 《数据结构与算法》 专业课,用来入门刚刚好。其他的演讲还可以看 Alex Petrov 的 ”为什么所有的开发者都应该了解数据库存储“。
Alex 还发布过一些关于数据库的系列博文,很值得一看:
磁盘 IO,Part 1:IO 的几种类型
磁盘 IO,Part 2:IO 的更多类型
磁盘 IO,Part 3:LSM 树
磁盘 IO,Part 4:B 树和 RUM 猜想
磁盘 IO,Part 5:LSM 树中的访问模式
除了视频课程,Thomas Cormen 联合著作的 《算法入门》 可以说是在算法和数据结构方面最全面的参考书目了。理论还要搭配实践才能熟能生巧,所以快去 leetcode.com 刷题吧!
另外,卡内基梅隆大学在油管上发布的关于数据库的课程录像也很值得参考:
数据库系统入门(2019 秋季)
高级数据库系统(2020 春季)
SQL:数据库的通用语言
作为数据工作的常用语言之一 SQL,自它在 70 年代的诞生开始,历经风雨,直到现在依然经久不衰。十年二十年后,SQL 恐怕还会继续坚强地活着。不信你看现在流行的这些数据库,哪个不支持 SQL?
PostgreSQL、MySQL、MS SQL Server、Oracle Database
Amazon Redshift、Apache Druid、Yandex ClickHouse、
HP Vertica、Greenplum
大数据的生态系统中有许多不同的 SQL 引擎:Presto(现为 Trino)、Hive、Impala 等等。花些时间把 SQL 吃透会带来意想不到的好处。
SQL 的纯新手可以从 Mode 的 SQL 教程 《SQL 入门》 开始看,熟练之后可以去 DataCamp 参加互动课程。推荐一些比较不错的课程:
SQL 中级课程
在 SQL 中 join 数据
PostgreSQL 汇总统计与窗口函数
SQL 最好参考资料应该数“现代 SQL”和“快用索引吧,Luke!”两大网站。还是那句话,实践出真知,Leetcode 的数据库题库 刷题避无可避。顺带一提,作者的另一篇关于 SQL 窗口函数 的文章也很值得一读。
编程:Python、Java,以及 Scala
Python 的流行不仅仅体现在 web app 的搭建上,在数据分析和数据科学领域,它仍然是大众的选择。丰富的生态系统和庞大的社区团体让 Python 成为了继 C 和 Java 之后,排名第三的最常用编程语言(数据源自 TIOBE 索引)。
至于 Java 和 Scala,大多的数据库系统都是用它们编写的:
Apache Kafka(Scala)
Hadoop HDFS (Java)
Apache Spark (Scala)
Apache Cassandra (Java)
HBase(Java)
Apache Hive、Presto(Java)
了解数据库系统使用的编程语言是掌握它们工作原理的好起点。Python 最大的弱点在于其性能不足,熟悉一门可以与之互补的、高性能语言会让你的简历脱颖而出。
Scala 的入门教程推荐参考 “推特的 Scala 学院”,Scala 作者编写 《Scala 编程》 一书也是个很好的起始点。
编程:Python、Java,以及 Scala
在大数据的生产环境中有很多实用工具,其中最流行的是:
Apache Kafka :行业领先的消息队列 / 事件总线 / 事件流技术
Apache Spark :大规模数据处理的统一分析引擎
Apache Hadoop :由不同工具、库和框架组成的大数据框架,其中包括分布式文件系统(HDFS)、Apache Hive、HBase 等等
Apache Druid :实时分析数据库
贪多嚼不烂,完整地将其中最流行的一款工具吃透,连其背后的基本概念也要了解才是最好的。具体可以参考 2013 年 Jay Kreps(Apache Kafka 的联合创始人之一)发表的论文 《日志:每个软件工程师都应该知道实时数据的统一抽象》。
云平台
云是大数据的最终归宿。作为求职者,你至少要有在任何一个云平台的开发经验。世界顶尖云平台提供商当属 亚马逊云服务(AWS),其次是 微软的 Azure(MSA),排行第三的是 谷歌云平台(GCP)。
这些顶尖云提供商都可以提供行业认可的证书。举例来说,AWS 上最适合数据工程师的证书是 AWS Certified Data Analytics - Specialty,GCP 的则是 专业数据工程师 认证,MSA 的是 Azure 数据工程师 - 基于角色。
分布式系统的基础
当今社会数据量之庞大,是不可能全部塞到一台计算机里的,将数据分散在不同节点上的分布式系统由此应运而生。优秀的数据工程师必须要清楚地了解分布式系统背后的基本原理。这一领域的入门教材有很多:
麻省理工的 分布式系统讲座,主讲 Robert Morris
分布式系统讲座,主讲 Martin Kleppmann
分布式系统讲座,主讲 Lindsey Kuper
至于实体书目,我会推荐 Martin Kleppmann 编写的 《设计数据密集型应用》 一书。如果你有兴趣,还可以参观他的 博客。另一位大佬 Vaidehi Joshi 发表的关于分布式系统的一系列 博文 也很值得一看。
数据管道
数据管道是指将数据进行整合的过程,它的构建同样是数据工程师的主要责任之一。作为一名合格的数据工程师,你应当能够将多个来源的数据可靠地交付、加载和转换到一个特定的目的地,这个目的地通常是指中央数据仓库或数据湖。你可选的工具有很多:Apache Airflow、Spotify 的 Luigi、Perfect 或者 Dagster。如果你更喜欢无代码的解决方案,那么 Apache 的 NiFi 是个很好的选择。
总 结
数据工程师并不适合单打独斗,与数据分析师、数据科学家、基础设施工程师,以及其他利益相关者通力合作,才能发挥出数据工程师的最大价值。因此,不要忘记软技能的培养,要具备同理心、理解业务领域、拥有开放的心态等等。
上一条:没有了
下一条:数据分析师和数据工程师的区别是什么? |
返回列表 |