在建立模型之前,在数据经过清洗用于探索分析之前,甚至在数据科学家工作开始之前,数据工程师就已经闪亮登场了。每一个数据驱动的业务都需要一个适用于数据科学管道的框架,否则就是失败的配置。
大多数人怀揣着成为数据科学家的梦想进入数据科学世界,但却没有意识到数据工程师是做什么的,或者这个角色需要具备什么能力。数据工程师是数据科学项目的重要组成部分,以至于在当今数据丰富的环境里,产业对他们的需求正在指数式地上涨。
目前,没有统一的或者正式的学习路线可供数据工程师使用。大多数担任这个角色的人是通过在工作中学习的,而不是遵循一个详细的学习路线。我写这篇文章的目的是帮助那些想成为数据工程师,但却不知道从哪里开始以及从哪里找到学习资源的人。
本文中,我列出了所有有抱负的数据工程师需要知道的事情。首先,我们将了解什么是数据工程师,以及该角色和数据科学家的区别,然后将继续讨论你的技能宝箱中应该有的核心技能,以便完全胜任这个工作,最后我还提到了一些应该考虑的行业认可证书。
好了,让我们直接开始吧!
一、什么是数据工程师
数据工程师负责构建和维护数据科学项目的数据架构,他们必须确保服务器和应用程序之间的数据流是连续的。改进数据基础应用程序,将新的数据管理技术和软件集成到现有系统中,构建数据收集管道及其他各种各样的事情,都属于数据工程师的职责。
数据工程中最受欢迎的技能之一是设计和构建数据仓库的能力。数据仓库是收集、存储和检索所有原始数据的地方,如果没有数据仓库,一个数据科学家做的所有任务就会变得要么太昂贵,要么太大,以至于无法拓展。
ETL(提取、转换和载入)是数据工程师构建数据管道所遵循的步骤,它实际上是一份关于如何处理、转换收集来的原始数据以备分析的蓝图。
数据工程师通常有着工程背景,与数据科学家不同的是,这个角色不需要太多的学术和科学知识。因此,对构建大规模结构和体系结构的开发人员或工程师非常适合这个角色。
二、数据科学家和数据工程师之间的区别
了解这两种角色之间的区别非常重要。从广义上讲,数据科学家综合使用统计学、数学、机器学习和行业知识来构建模型。他/她必须使用组织支持的相同工具/语言和框架来编码和构建这些模型。而数据工程师必须构建并维护适用于数据收集、处理和部署数据密集型应用的数据结构和体系架构。构建数据收集和存储管道,将数据汇总给数据科学家,从而将模型投入生产-这些只是数据工程师必须执行的任务中的一部分。
要使任何大规模数据科学项目取得成功,数据科学家和数据工程师需要携手合作,否则事情很快就会出错。
要了解有关这两个角色之间差异的更多信息,请访问我们的详细信息图。
详细信息图:https://www.analyticsvidhya.com/blog/2015/10/job-comparison-data-scientist-data-engineer-statistician/
三、与数据工程相关的不同角色
数据架构师:数据架构师为数据管理系统收集、整合和维护所有的数据源奠定基础,这个角色需要了解SQL、XML、Hive、Pig、Spark等工具。
数据库管理员:顾名思义,担任此角色的人需要对数据库有着广泛的了解。职责包括确保数据库对所有需要的用户可用,适当地维护数据库,并且保证在添加新特性时没有任何中断。
数据工程师:精通以上众多技巧的人。正如我们所见,数据工程师需要掌握数据库工具、Python和Java语言、分布式系统(如Hadoop)等知识,这个角色负责多种组合任务。
四、数据工程认证
1. 谷歌认证专家
这是目前最重要的数据工程认证之一。要获得此证书,你需要成功地通过一个具有挑战性的、2个小时多的考试,题型是多项选择题。你可以在这个网页上找到考试内容的大体范围,此外,这个网页提供给了一些实际操作谷歌云技术的实践指南。请一定要看一下!
谷歌认证专家:https://cloud.google.com/certification/data-engineer
2. IBM认证数据工程师
#p#分页标题#e#要获得证书,你需要通过这个考试。考试包含54个问题,你必须正确回答44个。我建议在考试前,先了解IBM希望你了解的内容。“考试”链接中还提供了学习资料的进一步链接,你可以参考这些资料进行准备。
IBM认证数据工程师:https://www.ibm.com/certify/cert?id=50001501
考试:https://www.ibm.com/certify/exam?id=C2090-101
3. Cloudera的CCP数据工程师
这是另一个全球公认的认证,对新手来说是一个相当具有挑战性的认证。你的概念需要更新和深入,你应该有一些使用数据工程工具的实践经验,如Hadoop,Oozie,AWS Sandbox等。但是,如果你通过这次考试,对于你获得开启数据工程领域工作来说,会是一个充满希望的开始!
Cloudera曾提到,如果你参加他们的Apache Spark和Hadoop培训课程,这将有助于你通过考试,原因是考试主要基于这两个工具。
Cloudera的CCP数据工程师:https://www.cloudera.com/more/training/certification/ccp-data-engineer.html
Apache Spark和Hadoop培训课程:https://www.cloudera.com/more/training/courses/developer-training-for-spark-and-hadoop.html
五、数据工程核心技能及其学习资源
1. 数据工程简介
在深入了解角色之间的不同方面之前,首先得了解数据工程的实质是什么。数据工程每天执行的不同工作是什么?顶尖技术公司想要怎样的数据工程师?你是应该了解可见的所有一切,还是仅仅了解与某一特定角色相关的东西?我的目的是提供以下参考资料,以助你找到这些问题或者其余更多问题的答案。
《数据工程入门指南》(第1部分):这是一篇非常受欢迎的、有关数据工程的文章,出自爱彼迎(Airbnb)的一位数据科学家之手。作者首先解释了为什么数据工程是所有机器学习项目中如此关键的一方面,然后深入探讨了本主题的每个部分。我认为这是所有想要成为数据工程师、数据科学家的新手们必读的一篇文章。
《数据工程入门指南》(第1部分):https://medium.com/@rchang/a-beginners-guide-to-data-engineering-part-i-4227c5c457d7
《数据工程入门指南》(第2部分):接着上面的文章,第2部分将介绍数据建模、数据分区、Airflow和ETL的最佳实践。
《数据工程入门指南》(第2部分):https://medium.com/@rchang/a-beginners-guide-to-data-engineering-part-ii-47c4e7cbda71
《数据工程入门指南》(第3部分):这是入门指南系列中的最后一部分,本部分将介绍数据工程框架的概念。在整个系列中,作者不断将理论与Airbnb的实践相结合,从而写了一篇篇精妙绝伦的文章,而且还在持续更新中。
《数据工程入门指南》(第3部分):https://medium.com/@rchang/a-beginners-guide-to-data-engineering-the-series-finale-2cc92ff14b0
O'Reilly的免费数据工程电子书套件:O'Reilly以其优秀的图书而出名,这一系列也不例外。不过,这些书是免费的!向下滚动到“大数据架构”部分,查看那里的书籍。有些书籍需要有大数据基础设施的基本知识,但这些书将有助于你熟悉复杂的数据工程任务。
O'Reilly的免费数据工程电子书套件:https://www.oreilly.com/data/free/
2. 基本语言要求:Python
虽然还有其他的数据工程专用编程语言(如JAVA和Scala),但我们本文将只关注Python。我们看到业界已经明显转向使用Python,而且使用率正在快速上升。它已经成为数据工程师(和数据科学家)技能的重要组成部分。
网络上有大量的学习Python资源,我在下面提到了其中的一些。
在Scratch平台上使用Python学习数据科学的完整教程:KunalJain的这篇文章涵盖了一系列可以用来开始学习和提升Python的资源,这是必读的资源。
在Scratch平台上使用Python学习数据科学的完整教程:https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/
使用Python的数据科学导论:这是Analytics Vidhya上最受欢迎的课程,涵盖了Python的基本知识。我们还额外介绍了核心统计概念和预测建模方法,以巩固你对python和数据科学基础的理解。
使用Python的数据科学导论:https://trainings.analyticsvidhya.com/courses/coursev1:AnalyticsVidhya+DS101+2018T2/about
Codeacademy上学习Python课程:本课程不需要编程基础,绝对是从python的最基础开始,这是一个很好的起点。
Codeacademy上学习Python课程:https://www.codecademy.com/learn/learn-python
如果你喜欢通过书本来学习,下面是一些免费的电子书,便于你开始学习:
Allen Downey的《思考Python》:全面深入地介绍了Python语言,非常适合新手,甚至非程序员。
Allen Downey的《思考Python》:
Python 3的非程序员教程:顾名思义,它是非IT背景和非技术背景新手们的完美起点,每章都有大量的示例来测试你的知识。
Python 3的非程序员教程:https://upload.wikimedia.org/wikipedia/commons/1/1d/Non-Programmer%27s_Tutorial_for_Python_3.pdf
3. 扎实的操作系统知识
#p#分页标题#e#在整个数据科学世界的“机器”中,操作系统是使管道运转起来的重要“齿轮”。数据工程师应该了解基础设施组件(如虚拟机、网络、应用程序服务等)的输入和输出。你对服务器管理有多精通?你对Linux是否有足够的了解,可以浏览不同的配置吗?你对访问控制方法有多熟悉?作为一名数据工程师,这些只是你将面临的一些问题。
Linux服务器管理和安全:本课程是为那些想了解Linux如何在公司应用的人而设计的,课程内容分为4周(最后还有一个项目),详细介绍了这个主题中的所有基本内容。
Linux服务器管理和安全:https://www.coursera.org/learn/linux-server-management-security
CS401-操作系统:和其他操作系统课程一样全面,这个课程包含9个部分,专门介绍操作系统的不同方面。主要介绍基于Unix的系统,尽管Windows也包括在内。
CS401-操作系统:https://learn.saylor.org/course/cs401
Raspberry Pi平台和Raspberry Pi的python编程:这是一个炙手可热的编程方式,现在对这种编程人员的需求空前高涨。本课程旨在让你熟悉Raspberry Pi环境,并让你开始学习Raspberry PI上的python基本代码。
Raspberry Pi平台和Raspberry Pi的python编程:https://www.coursera.org/learn/raspberry-pi-platform
4. 丰富、深入的数据库知识-SQL和NoSQL
为了成为一名数据工程师,你需要熟练掌握数据库语言和工具。这是另一个非常基本的要求,你需要具备实时从数据库收集、存储和查询信息的能力。现今有很多可用的数据库,我已经列出了目前在业界广泛使用的数据库的相关资源,分为SQL和NoSQL两部分。
(1) SQL数据库
免费学习SQL:这是codecademy另一个课程,你可以在这里学到SQL很基本的知识,像操作、查询、聚合函数这些主题从一开始就涵盖了。如果你是这个领域的新手,没有比这更好的起点了。
免费学习SQL:https://www.codecademy.com/learn/learn-sql
快速查找SQL命令的备忘录:一个非常有用的Github存储库,包含定期更新的SQL查询和示例。为了保证你在任何时候都可以快速查找SQL相关命令,请将为这个存储库加入收藏,作为日常参考。
快速查找SQL命令的备忘录:https://github.com/enochtangg/quick-SQL-cheatsheet
MYSQL教程:MySQL创建于20多年前,至今仍是业界的热门选择。这个资源是一个基于文本的教程,易于理解。这个站点最酷的是,每个主题都附带实用示例的SQL脚本和屏幕截图。
MYSQL教程:
学习Microsoft SQL Server:本教程从基础知识到更高的主题探讨SQL Sever的概念,并以代码和详细的屏幕截图的方式解释了概念。
学习Microsoft SQL Server:https://www.tutorialspoint.com/ms_sql_server/
PostgreSQL教程:这是一个让人惊叫的详细指南,让你开始和熟悉PostgreSQL。本教程分为16个部分,因此你完全可以想象出该课程的覆盖面有多广。
PostgreSQL教程:
Oracle Live SQL:谁能比创建者更好地学习Oracle SQL数据库?这个平台设计得非常好提供了良好的终端用户体验。你可以在这个平台上查看脚本和教程,然后还可以在这里编码。哇,这太棒啦!
Oracle Live SQL:https://livesql.oracle.com/apex/f?p=590:1000
(2) NoSQL数据库
#p#分页标题#e#MongoDB来自MongoDB:这是目前最流行的NoSQL数据库,和上面提及的Oracle培训课程一样,学习MongoDB最好的方式是从创建它的大师们那里学习。我在这里链接了他们的整个课程目录,你可以选择你想参加的培训课程。
MongoDB来自MongoDB:https://university.mongodb.com/courses/catalog
MongoDB简介:本课程将帮助你快速启动和运行MongoDB,并教你如何利用它进行数据分析。这是一个为期3周的短课程,但有大量的练习。当你完成的时候,会觉得自己就是一名专家了!
MongoDB简介:https://www.coursera.org/learn/introduction-mongodb
学习Cassandra:如果你正在寻找一个优秀的、基于文本的、新手易于理解的Cassandra简介,这会是一个完美的资源。像Cassandra的架构、安装、关键操作等主题都会在这里有所介绍,本教程还提供了专门的章节来讲解CQL种可用的数据类型和集合、以及如何使用用户自定义的数据类型。
学习Cassandra:https://www.tutorialspoint.com/cassandra/index.htm
Redis Enterprise:了解Redis的资源不多,但这一个站点就足够了。有多个课程和精心设计的视频,使人沉浸其中,乐趣无穷,而且它是免费的!
Redis Enterprise:https://university.redislabs.com/
Google Bigtable:作为Google的产品,学习BigTable工作原理的资源稀缺得让人惊讶,我链接了一个包含大量谷歌云主题的课程,你可以向下滚动,选择BigTable(或BigQuery)。不过,我建议你仔细阅读整个课程,因为它提供了有关谷歌整个云产品如何工作的宝贵见解。
Google Bigtable:https://www.coursera.org/learn/gcp-fundamentals
Couchbase:这里提供多种培训课程(向下滚动查看免费培训课程),从初学者到高级都有。如果Couchbase是你们所用的数据库,那么你将在这里了解有关它的所有信息。
Couchbase:
5. 数据仓库-Hadoop、MapReduce、Hive、Pig、Apache Spark、Kafka
现在,在每一个数据工程师的工作描述中都会看到像Hadoop(HDFS)这样的分布式文件系统。它是所有角色都需要掌握的,你应该非常熟悉。除此之外,你还需要了解ApacheSpark、Hive、Pig、Kafka等平台和框架,我在本节列出了所有这些主题的资源。
(1) Hadoop和MapReduce
Hadoop基础知识:这本质上是Hadoop的学习路径,它包括5门课程,可以让你深入地了解hadoop是什么、定义它的体系结构和组件是什么、如何使用它、它的应用怎么样以及其他更多的内容。
Hadoop基础知识:https://cognitiveclass.ai/learn/hadoop/
Hadoop入门包:对于想要着手开始学Hadoop的人来说,这是一个非常全面的、优秀的免费课程。它包括HDFS、MapReduce、Pig和Hive之类的主题,可以通过免费访问集群来练习所学的内容。
Hadoop入门包:https://www.udemy.com/hadoopstarterkit/
HortonWorks教程:作为Hadoop的创建者,HortonWorks拥有一套令人万分期待的课程,可以学习与Hadoop相关的各种知识。从低级到高级,本页有着非常全面的教程列表,一定要看一下这个!
HortonWorks教程:https://hortonworks.com/tutorials/
MapReduce简介:在阅读本文之前,你需要了解Hadoop的基本工作原理。请完成后,再回来深入了解MapReduce的世界。
MapReduce简介:https://www.analyticsvidhya.com/blog/2014/05/introduction-mapreduce/
Hadoop超越了传统的MapReduce-简版:本文介绍了Hadoop生态系统的概述,它超越了简单的MapReduce。
Hadoop超越了传统的MapReduce-简版:https://www.analyticsvidhya.com/blog/2014/11/hadoop-mapreduce/
更喜欢书吗?别担心,我已经帮你选好了!下面是一些免费电子书,涵盖hadoop和它的组件。
《Hadoop详解》:简要介绍Hadoop的复杂体系,对Hadoop的工作原理、优势、现实场景中的应用程序等进行了高层次的概述。
《Hadoop详解》:https://www.packtpub.com/packt/free-ebook/hadoop-explained
《Hadoop-你应该了解的》:这本书和上面的书有相似的内容。正如描述所说,这些书所涵盖的内容足够让你了解Hadoop的方方面面,从而做出明智的决策。
《Hadoop-你应该了解的》:https://www.oreilly.com/data/free/hadoop-what-you-need-to-know.csp?intcmp=il-data-free-lp-lgen_free_reports_page
《使用MapReduce进行数据密集型文本处理》:这本免费电子书涵盖了MapReduce的基本知识及其算法的设计,然后深入探讨了你应该了解的示例和应用程序。建议你在阅读这本书之前先上上述课程。
《使用MapReduce进行数据密集型文本处理》:https://lintool.github.io/MapReduceAlgorithms/MapReduce-book-final.pdf
你应该加入Hadoop LinkedIn小组,以保证自己获取最新的消息,并询问你的任何问题。
Hadoop LinkedIn小组:https://www.linkedin.com/groups/988957/profile
(2) Apache Spark
#p#分页标题#e#Apache Spark、RDD和Dataframes(使用PySpark)的综合指南:这是一篇让你开始学习Apache Spark的终极文章,属于必读指南。它介绍了Apache Spark的历史以及如何使用Python、RDD/Dataframes/Datasets安装它,然后通过解决机器学习问题,对自己的知识点进行查漏补缺。
Apache Spark、RDD和Dataframes(使用PySpark)的综合指南:https://www.analyticsvidhya.com/blog/2016/09/comprehensive-introduction-to-apache-spark-rdds-dataframes-using-pyspark/
初学者学习Spark R的详细指南:如果你是R的用户,这个就是为你准备的!当然,你可以使用Spark和R,本文可以作为你的指南。
初学者学习Spark R的详细指南:https://www.analyticsvidhya.com/blog/2016/06/learning-path-step-step-guide-beginners-learn-sparkr/
Spark的基础知识:本课程涵盖Spark的基础知识、组件、使用方法、使用它的交互式示例和各种Spark库,最后了解Spark集群。你还能从这门课程中要求更多的内容吗?
Spark的基础知识:https://cognitiveclass.ai/courses/what-is-spark/
ApacheSpark和AWS简介:这是一门以实践为中心的课程。你将处理古登堡项目数据,它是世界上最大的电子书开放数据集。你还需要了解Python和Unix命令行,以便从本课程中学到更多。
ApacheSpark和AWS简介:https://www.coursera.org/learn/bigdata-cluster-apache-spark-and-aws
(3) 涵盖Hadoop、Spark、Hive和Spark SQL的综合教程
大数据基础知识-HDF、MapReduce和Spark RDD:本课程采用真实的数据来教你基本的大数据技术-HDFS、MapReduce和Spark。这门课程非常详细,示例丰富,数据集实用,而且教师很优秀,属于经典课程。
大数据基础知识-HDF、MapReduce和Spark RDD:https://www.coursera.org/learn/big-data-essentials
大数据分析-Hive、Spark SQL、DataFrames 和GraphFrames:MapReduce和Spark解决了处理大数据的部分问题,通过这门直观的课程你可以掌握这些高级工具,从而掌握有关Hive和Spark SQL等方面的知识。
大数据分析-Hive、Spark SQL、DataFrames 和GraphFrames:https://www.coursera.org/learn/big-data-analysis
大数据应用-实时流:处理大数据的挑战除了要具备处理数据的计算能力,还要具备尽可能快的处理速度。像推荐引擎这样的应用程序需要实时地进行大量数据的处理、存储和查询,这就要求你掌握本课程中所提供的诸如Kafka、Cassandra和Redis等系统的知识。但要学习这门课程,你需要了解Hadoop、Hive、Python、Spark和Spark SQL的应用。
大数据应用-实时流:https://www.coursera.org/learn/real-time-streaming-big-data
Kafka
使用Apache Kafka简化数据管道:了解Apache Kafka及其体系架构和使用方法,你需要对Hadoop、Spark和Python有基本的了解,才能真正从本课程中获得最大的收获。
使用Apache Kafka简化数据管道:https://cognitiveclass.ai/courses/simplifyingdatapipelines/
Kafka官方文档:这是一个非常直观地介绍Kafka的工作原理及其组件的网页,它还提供了一个关于分布式流媒体平台的解释说明,非常棒!
Kafka官方文档:https://kafka.apache.org/intro
用Kafka给数据科学家赋能:这本身不是一个很好的学习资源,而是一篇介绍Stitch Fix的数据工程师如何根据数据科学家的要求构建一个平台的文章,非常有趣,而且十分详细。
用Kafka给数据科学家赋能:https://multithreaded.stitchfix.com/blog/2018/09/05/datahighway/
6. 基本的机器学习知识
虽然人们普遍认为机器学习是数据科学家的领域,但数据工程师也需要精通其中的某些技术,原因在于你需要简化将模型投入生产的过程和用于数据收集、生成的管道。因此,你需要对机器学习算法有一个基本的了解。
#p#分页标题#e#学习机器学习基础知识的新手指南:作者Kunal Jain精彩地介绍了机器学习世界,旨在消除你听到或读到地所有行话。指南直截了当地切入问题的核心,最终你会爱上这种写作风格。
学习机器学习基础知识的新手指南:https://www.analyticsvidhya.com/blog/2015/06/machine-learning-basics/
机器学习算法基本知识:这是一篇优秀的文章,提供了各种对机器学习算法的高层次理解,还提供了在R和python实现这些算法的指南,这是开启你学习旅程的绝佳地点!
机器学习算法基本知识:https://www.analyticsvidhya.com/blog/2017/09/common-machine-learning-algorithms/
新手必读的机器学习和人工智能书籍:如果你更喜欢看书,那么请阅读本文!这里收藏了最优秀的书,即使你只读了其中的几本,这也会助你朝着梦想中的事业迈进一大步!
新手必读的机器学习和人工智能书籍:https://www.analyticsvidhya.com/blog/2018/10/read-books-for-beginners-machine-learning-artificial-intelligence/
提升你知识和技能的24个终极数据科学项目:一旦你获得了一定量的知识和技能,请一定要把你的理论知识付诸实践。查看这些数据集,按照易到难的顺序,开始处理吧!
提升你知识和技能的24个终极数据科学项目:https://www.analyticsvidhya.com/blog/2018/05/24-ultimate-data-science-projects-to-boost-your-knowledge-and-skills/
六、总结
成为一名数据工程师并不容易,因为你需要从以上所有的资源中获取信息,而且你还要有着将工具、技术和职业道德融为一体的深入理解。由于现在是数据时代,数据工程师在业内需求巨大,对于任何愿意从事这一工作的人来说,这依旧是一个收入可观的职业选择!
一旦你走上这条路,就力争成为数据工程师吧!请在下面的评论区,告诉我你对这组资源的反馈和建议。
原文标题:Want to Become a Data Engineer? Here’s a Comprehensive List of Resources to get Started
原文链接:https://www.analyticsvidhya.com/blog/2018/11/data-
【本文是51CTO专栏机构大数据文摘的原创译文,微信公众号“大数据文摘( id: BigDataDigest)”】
戳这里,看该作者更多好文
【编辑推荐】
我,一个数据科学家的三大弱点
都是数据科学家,为什么TA薪水比你高?
数据科学家“恐怖故事”
十季剧集数据分析,《老友记》中的C位原来是TA!
初创公司数据科学项目全流程指南,一位资深数据科学家的经验谈