数据工程师的终极指南

这个年代每个人都想成为数据科学家。但数据工程呢?从本质上讲,它是数据分析师和数据科学家之间的混合体。数据工程师负责管理数据工作流,管道和ETL流程。鉴于这样的功能,市场对数据工程师的需求其实十分巨大,如果您想成为这样的英雄,那么开始学习永远不会太晚。在这篇文章中,我整理了所有必要的信息,以帮助您迈出第一步。
 

什么是数据工程?

没有比这更好的解释了:
 
科学家可以发现一颗新星,但他无法制造一颗。他不得不请工程师为他做 - 戈登·林赛·格莱格
 
数据工程与数据相关联,包括数据获取,存储和处理。因此,工程师的主要任务是为数据提供可靠的基础架构。如果我们看一下需求的层次结构,数据工程将进入其中的前2-3个阶段:收集,移动和存储,数据准备。
 
数据工程师的终极指南
 

数据工程师做什么?

随着“大数据”的出现,责任领域发生了巨大变化。如果这些专家早些时候使用Informatica ETL,Pentaho ETL,Talend等工具编写了大型SQL查询并超过了数据,那么现在对数据工程师的要求已经提高。
 
大多数招聘数据工程师的公司都有如下需求:
 
  • 精通SQL和Python
  • 熟练使用云计算平台
  • 对SQL和NoSQL数据库有很好的理解(数据建模,数据仓库)
请记住,这只是必需品。从这个清单中,我们可以假设数据工程师是软件工程和后端开发领域的专家。
 
例如,如果公司开始从不同的来源生成大量数据,那么作为数据工程师,您的任务就是组织信息的收集,处理和存储。
 
在这种情况下使用的工具列表可能会有所不同,一切取决于数据的数量,其到达速度和异构性。大多数公司根本没有大数据,因此,作为集中存储库,即所谓的数据仓库,您可以使用带有少量脚本的SQL数据库(PostgreSQL,MySQL等)将数据驱动到存储库中。
谷歌,亚马逊,脸谱等IT巨头有更高的要求:
 
  • 掌握Python,Java或Scala
  • 大数据经验:Hadoop,Spark,Kafka
  • 算法和数据结构知识
  • 了解分布式系统的基础
  • 具备Tableau或ElasticSearch等数据可视化工具的经验将是一大优势
简单来说,大数据对工程师的要求更高,因为必须在高负载下进行处理。
 

数据工程师 vs 数据科学家

数据工程师的终极指南
 
首先,您应该知道数据科学与数据工程师的角色和技能之间确实存在很多差异。因此,您很容易为成功的数据工程师所需的技能感到困惑。数据科学是真实的事物,但是世界正在转变为功能性数据科学世界,从业者可以进行自己的分析。您需要数据工程师(而不是数据科
学家)来创建数据管道和集成数据结构。
 
数据工程师比数据科学家有更多需求吗?是的,因为在制造美味佳肴之前,首先得有原料!
 

数据工程师必须掌握的技能

 
1. 算法和数据结构
 
使用正确的数据结构可以大大提高算法的性能。理论上程序员应该学校学习数据结构和算法,但现实并非如此。下方是我最喜欢的在线课程,用于学习数据结构和算法:
 
另外不要忘了Thomas Cormen撰写的有关算法的经典著作:算法简介当您需要刷新记忆时,这是完美的参考。
 
您还可以在YouTube上观看卡内基·梅隆大学的精彩视频,深入数据库的世界:
 
2. 学习SQL
 
SQL(结构化查询语言)是数据领域的通用语言。不管有人怎么贬低它,SQL都可以生存,并且可以生存很长时间。如果您是经验丰富的开发,您可能会注意到有关SQL即将死亡的谣言会定期出现。该语言开发于70年代初期,在分析人员,开发人员和*者中仍然非常流行。
 
在数据工程领域,不懂SQL将寸步难行,因为您将不可避免地从数据库中获取数据。所有现代大数据仓库都支持SQL:
 
  • 亚马逊Redshift
  • 惠普Vertica
  • 甲骨文
  • SQL服务器
为了分析存储在HDFS等分布式系统中的大量数据,发明了SQL引擎:Apache Hive,Impala等。
 
如何学习SQL?只需要不断练习
 
我建议您熟悉Mode Analytics提供的优秀教程,该教程是免费的
3. 用Python和Java / Scala编程
 
为什么要学习Python,因为这是应用数据科学的最佳工具。对于Java和Scala,大多数用于存储和处理大量数据的工具都是用这些语言编写的。例如:
 
  • Apache Kafka(Scala)
  • Hadoop,HDFS(Java)
  • Apache Spark(Scala)
  • Apache Cassandra(Java)
  • HBase(Java)
  • Apache Hive(Java)
要了解这些工具的工作方式,您需要了解它们所使用的语言。Scala的函数式编程使您可以有效地解决并行数据处理的问题,在性能方面,python远远比不上Scala。
 
要深入学习Scala语言,您可以阅读该语言作者的《使用Scala编程》。此外,Twitter公司还发布了一个很好的入门指南Scala School
 
至于Python,我认为Fluent Python是最好的中级水平的书。
 
4. 大数据工具
 
以下是大数据世界中最受欢迎的工具列表:
 
  • Apache Spark
  • Apache Kafka
  • Apache Hadoop(HDFS,HBase,Hive)
  • Apache Cassandra
最受欢迎的工具是Spark和Kafka,他们绝对值得探索,最好从内部了解它们的工作方式。
 
Hadoop简介可以是《精通Hadoop的完整指南》(免费)。
 
对我来说,关于Apache Spark的最全面的指南是Spark:权威指南
 
5. 云平台
 
数据工程师的终极指南
 
熟练使用至少一个云平台是数据工程师的必备条件。按照市场份额划分,最顶尖的云服务提供商是:亚马逊AWS,谷歌CloudPlatform,微软Azure。
 
6. 分布式系统
 
大数据通常存储在独立运行的计算机集群,它们之间的通信是通过网络进行的。群集越大,其成员节点发生故障的可能性越大。要成为出色的数据专家,您需要了解分布式系统的问题和现有解决方案。Andrew Tanenbaum被认为是该领域的先驱。对于那些想学习复杂理论的人,我推荐他的《分布式系统》一书,对于初学者来说可能很难,但是它确实可以帮助您提高技能。
 
我认为Martin Kleppmann的《设计数据密集型应用程序》是最好的入门书籍。对于那些喜欢看视频的人,Youtube上有一门分布式计算机系统课程

 

7.数据管道

数据工程师的终极指南
 
很多时候,数据工程师要构建所谓的数据管道(Data Pipeline)。数据管道可理解为将数据从一个地方传递到另一个地方的过程,这些可以是自定义脚本,可以转到外部服务API或进行SQL查询,丰富数据并将其放入集中式存储(数据仓库)或非结构化数据的存储(数据湖)。
 

汇总

 
除上面罗列的几点外,要成为优秀的数据工程师,还应该充分理解:
 
  • 信息系统
  • 软件工程(敏捷开发,DevOps,设计技术,SOA)
  • 分布式系统和并行编程
  • 数据库基础知识:计划,设计,操作和故障排除
  • 实验设计:A / B测试,用于将“概念验证”系统的可靠性,性能以及为提供“实时”交付好的解决方案而设计的流线型设计
最后我要说一件很重要的事情:成为数据工程师的过程并不像看起来那样容易,这是一个艰难的旅程,您必须为此做好准备。但是只要坚持,就能学到非常多的新技能。下方的学习曲线很好地说明了这一点。
 
数据工程师的终极指南
 
 

【关于我们】

蜂鸟数据:开源金融数据库,聚合主流金融市场10000+时间序列,为广大金融从业者提供高质量的免费数据。我们的优势:1. 同时提供股票,外汇,商品期货的实时报价和历史数据;2. 提供高度统一的API接口,您可以把数据整合到自己的程序中,查看我们的API文档

这是属于大数据的时代,蜂鸟数据的使命:用数据创造财富。如果您有建设性意见,欢迎给我们留言。