你好! 文章的标题说明了自己。 考虑到
“数据工程师”课程的开始
,我们建议弄清楚谁是数据工程师。 这篇文章有很多有用的链接。 好好阅读。
关于如何抓住数据工程浪潮并防止其将您拉入深渊的简单指南。令人印象深刻的是,如今每个人都想成为数据科学家。 但是数据工程呢?
从本质上讲,它是数据分析师和数据科学家的混合体。 数据工程师通常负责管理工作流,处理管道和ETL流程 。 由于这些功能的重要性,这是当前正在流行的另一种流行的专业术语。
高薪和大量需求只是使这份工作极具吸引力的一小部分! 如果您想加入英雄行列,开始学习永远不会太晚。 在这篇文章中,我收集了所有必要的信息,以帮助您迈出第一步。
因此,让我们开始吧!
什么是数据工程?老实说,没有比这更好的解释了:
“科学家可以发现一颗新星,但无法创造出来。 他将不得不请工程师为他做。”
–戈登·林赛·格莱格
因此,数据工程师的作用非常重要。
顾名思义,数据工程与数据相关联,即数据的交付,存储和处理。 因此,工程师的主要任务是为数据提供可靠的基础架构。 如果我们看一下AI的需求层次结构,则数据工程将进入前2-3个阶段:
收集,移动和存储,准备数据 。
数据工程师做什么?随着大数据的到来,责任领域发生了巨大变化。 以前,这些专家使用Informatica ETL,Pentaho ETL,Talend等工具编写了大型SQL查询并覆盖了数据,但现在对数据工程师的要求有所提高。
大多数具有职位空缺的数据工程师职位的公司都有以下要求:
- 精通SQL和Python。
- 有云平台经验,尤其是Amazon Web Services。
- 有Java / Scala知识者优先。
- 对SQL和NoSQL数据库(数据建模,数据存储)有很好的了解。
请记住,这只是最必要的。 从这个清单中,我们可以假设数据工程师是软件开发和后端领域的专家。
例如,如果公司开始从各种来源生成大量数据,那么作为数据工程师,您的任务就是组织信息的收集,处理和存储。
在这种情况下使用的工具列表可能会有所不同,这完全取决于此数据的数量,其接收的速度和异构性。 大多数公司根本不会遇到大数据,因此,作为集中式存储库(即所谓的数据存储库),您可以使用带有少量脚本的SQL数据库(PostgreSQL,MySQL等),这些脚本将数据定向到存储库。
诸如Google,Amazon,Facebook或Dropbox之类的IT巨头有更高的要求:对Python,Java或Scala的了解。
- 大数据经验:Hadoop,Spark,Kafka。
- 了解算法和数据结构。
- 了解分布式系统的基础。
- 具有Tableau或ElasticSearch等数据可视化工具的经验将是一大优势。
就是说,明显地向大数据转移,即在高负载下进行处理。 这些公司对系统的容错能力有更高的要求。
数据工程师与 科学家数据
好吧,这是一个简单而有趣的比较(没有任何个人意义),但实际上,一切都更加复杂。首先,您应该知道,数据科学家和数据工程师的角色和技能之间存在很大的歧义。 也就是说,对于成功的数据工程师需要什么样的技能,您很容易会感到困惑。 当然,有些技能可以同时兼顾这两个角色。 但是,还有一些截然相反的技能。
数据科学是一个严肃的问题,但是我们正在朝着功能数据科学的世界迈进,在这个世界中,从业者能够进行自己的分析。 要使用数据管道和集成数据结构,您需要数据工程师,而不是科学家。
数据工程师比数据科学家有更多需求吗?-是的,因为在制作胡萝卜蛋糕之前,您首先需要收集,去皮并储备胡萝卜!
数据工程师比任何一位数据科学家都对编程了解得更多,但是在统计方面,情况恰恰相反。
但这是数据工程师的优势:没有他/她,原型模型的价值通常为零,而原型模型的价值通常是从数据科学家那里收到的,以某种方式给出结果的Python文件中质量很差的代码片段组成。
没有数据工程师,该代码将永远不会成为项目,也不会有效解决任何业务问题。 数据工程师正在尝试将所有这些变成产品。
数据工程师应了解的基本信息
因此,如果这项工作引起您的兴趣,并且您很热心-您能够学习它,那么您就可以掌握所有必要的技能,并成为数据开发领域的真正摇滚明星。 而且,是的,即使没有编程技能或其他技术知识,您也可以执行此操作。 很难,但是可能!
第一步是什么?您应该大致了解什么是什么。
首先,数据工程是指计算机科学。 更具体地说,您必须了解有效的算法和数据结构。 其次,由于数据工程师使用数据,因此必须了解数据库的操作原理及其基础结构。
例如,常规的B树SQL数据库基于B树数据结构,以及现代的分布式存储库,LSM树和其他哈希表修改。
*这些步骤基于Adil Khashtamov的精彩文章。 因此,如果您会俄语,请支持该作者并阅读他的文章 。1.算法和数据结构使用正确的数据结构可以显着提高算法性能。 理想情况下,我们所有人都应该在学校学习数据结构和算法,但这很少涉及。 无论如何,结识永远不会太晚。
因此,这是我最喜欢的用于学习数据结构和算法的免费课程:
另外,不要忘了关于Thomas Cormen算法的经典著作-算法
简介 。 当您需要刷新内存时,这是完美的参考。
您还可以在YouTube上观看卡内基·梅隆大学的精彩视频,深入数据库世界:
2.学习SQL我们的一生就是数据。 为了从数据库中提取这些数据,您需要使用一种语言与它们“交谈”。
SQL(结构化查询语言)是一种数据通信语言。 不管有人说什么,SQL都可以生存,并且还可以生存很长时间。
如果您已经开发了很长时间,您可能会注意到有关SQL即将死亡的谣言会定期出现。 该语言开发于70年代初,在分析人员,开发人员和狂热者中仍然非常流行。
如果没有SQL知识,则数据工程将无所事事,因为您将不可避免地必须创建查询来检索数据。 所有现代大数据存储都支持SQL:
...以及许多其他
为了分析存储在诸如HDFS之类的分布式系统中的大量数据,发明了SQL机制:Apache Hive,Impala等。您会发现,它不会走开。
如何学习SQL? 只是在实践中做。
为此,我建议阅读一本出色的教程,顺便说一句,它免费提供
Mode Analytics 。
- SQL媒介
- 在SQL中合并数据
这些课程的一个显着特征是存在一个交互式环境,您可以在其中直接在浏览器中编写和执行SQL查询。
Modern SQL资源将不是冗余的。 您可以在数据库部分的
Leetcode任务中应用此知识。
3.用Python和Java / Scala编程为什么值得学习Python编程语言,我已经在文章
Python vs R中写过
。选择AI,ML和Data Science的最佳工具 。 对于Java和Scala,大多数用于存储和处理大量数据的工具都是用这些语言编写的。 例如:
- Apache Kafka(Scala)
- Hadoop,HDFS(Java)
- Apache Spark(Scala)
- Apache Cassandra(Java)
- HBase(Java)
- Apache Hive(Java)
要了解这些工具的工作方式,您需要了解它们所使用的语言。 Scala的功能性方法使您可以有效地解决并行数据处理的任务。 不幸的是,Python无法吹嘘速度和并行处理。 通常,几种语言和编程范例的知识会很好地影响解决问题的方法的广度。
要使自己沉迷于Scala语言,您可以阅读该语言作者的《使用
Scala编程 》。 Twitter还发布了一个很好的入门指南
-Scala School 。
至于Python,我觉得
Fluent Python是最好的中档书。
4.大数据工具以下是大数据世界中最受欢迎的工具列表:
- 阿帕奇火花
- 阿帕奇卡夫卡
- Apache Hadoop(HDFS,HBase,Hive)
- Apache Cassandra
您可以在这个惊人的
交互式环境中找到有关构建大型数据块的更多信息。 最受欢迎的工具是Spark和Kafka。 他们绝对值得探索,建议从内而外了解它们的工作方式。 Jay Kreps(Kafka的合著者)在2013年发表了具有纪念意义的著作
The Log:每个软件开发人员都应了解实时数据聚合的抽象知识,顺便说一下,该Talmud的主要思想被用于创建Apache Kafka。
5.云平台
对数据工程师职位的申请人的基本要求列表中至少包含一个云平台的知识。 雇主优先选择Amazon Web Services,其次是Google的云平台,并与微软Azure的前三名领导人保持联系。
您应该精通Amazon EC2,AWS Lambda,Amazon S3,DynamoDB。
6.分布式系统处理大数据意味着存在独立运行的计算机集群,它们之间的通信是通过网络进行的。 群集越大,其成员节点发生故障的可能性越大。 要成为出色的数据专家,您需要深入研究分布式系统的问题和现有解决方案。 这个地区又旧又复杂。
Andrew Tanenbaum被认为是该领域的先驱。 对于不怕理论的人,我推荐他的《
分布式系统》一书,对于初学者来说,这似乎很复杂,但是它确实可以帮助您提高技能。
我发现
Martin Kleppmann设计的数据密集型应用程序是最好的入门书。 顺便提一下,马丁有一个很棒的
博客 。 他的工作将有助于系统化有关构建用于存储和处理大数据的现代基础架构的知识。
对于那些喜欢看视频的人,Youtube上有一个
分布式计算机系统课程。
7.数据管道
数据管道是没有数据工程师就无法生存的东西。
在大多数情况下,数据工程师会建立所谓的管道日期,即它会创建将数据从一个地方传递到另一个地方的过程。 这些可以是转到外部服务API或进行SQL查询,对数据进行补充并将其放入集中式存储(数据仓库)或非结构化数据存储(数据湖)的用户脚本。
总结:主要数据工程师清单
总而言之,您需要对以下内容有充分的了解:
- 信息系统;
- 软件开发(敏捷,DevOps,设计技术,SOA);
- 分布式系统和并行编程;
- 数据库基础-计划,设计,操作和故障排除;
- 设计实验-A / B测试以证明概念,确定可靠性,系统性能,并开发可靠的方法来快速提供良好的解决方案。
这些只是成为数据工程师的一些要求,因此,学习和理解数据系统,信息系统,持续交付/部署/集成,编程语言和计算机科学中的其他主题(并非在所有学科领域中都如此)。
最后,我想说的最后但很重要的一件事。成为数据工程的道路并不像看起来那样简单。 他不会原谅,沮丧,您必须为此做好准备。 此旅程中的某些要点可能会提示您退出。 但这是一个真实的工作和教育过程。
只是不要从一开始就修饰它。 整个旅行的重点是要学习尽可能多的知识,并为应对新的挑战做好准备。
这是我遇到的一张很好的图片,很好地说明了这一点:

是的,请记住避免倦怠和休息。 这也很重要。 祝你好运
朋友,您如何喜欢这篇文章? 我们邀请您参加
免费的网络研讨会 ,该
研讨会将于今天20:00举行。 作为网络研讨会的一部分,我们将讨论如何为小型公司或初创公司以最小的成本构建有效且可扩展的数据处理系统。 作为一种做法,我们将向您介绍Google Cloud数据处理工具。 待会见!