再一次问好! 文章的标题不言而喻。 期待课程的开始
关于如何抓住数据工程浪潮而不让它把您拖入深渊的简单指南。
如今似乎每个人都想成为一名数据科学家。 但是数据工程呢? 本质上,这是数据分析师和数据科学家的混合体; 数据工程师通常负责管理工作流程、处理管道和 ETL 流程。 由于这些功能的重要性,这是目前另一个正在积极发展的流行专业术语。
高薪和巨大的需求只是这份工作极具吸引力的一小部分! 如果你想加入英雄行列,开始学习永远不会太晚。 在这篇文章中,我收集了所有必要的信息来帮助您迈出第一步。
什么是数据工程?
老实说,没有比这更好的解释了:
“科学家可以发现一颗新星,但他无法创造一颗。 他必须请一名工程师来帮他做这件事。”
——戈登·林赛·格莱格
由此可见,数据工程师的作用是非常重要的。
顾名思义,数据工程关注的是数据,即数据的交付、存储和处理。 因此,工程师的主要任务是为数据提供可靠的基础设施。 如果我们看一下人工智能的需求层次结构,数据工程占据了前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 等数据可视化工具的经验将优先。
也就是说,有一个明显的向大数据的转变,即在高负载下的处理。 这些公司对系统容错能力提出了更高的要求。
数据工程师 Vs. 数据科学家
好吧,这是一个简单而有趣的比较(没有什么个人的),但实际上它要复杂得多。
首先,您应该知道数据科学家和数据工程师的角色和技能的划分存在很多模糊性。 也就是说,您很容易对成为一名成功的数据工程师需要哪些技能感到困惑。 当然,这两个角色有一些重叠的技能。 但也有一些截然相反的技能。
数据科学是一项严肃的业务,但我们正在走向一个功能性数据科学的世界,从业者可以在其中进行自己的分析。 为了启用数据管道和集成数据结构,您需要数据工程师,而不是数据科学家。
数据工程师比数据科学家更受欢迎吗?
- 是的,因为在制作胡萝卜蛋糕之前,您首先需要收集、剥皮并储存胡萝卜!
数据工程师比任何数据科学家都更了解编程,但在统计方面,情况恰恰相反。
但这是数据工程师的优势:
如果没有他/她,原型模型(通常由 Python 文件中的一段质量很差的代码组成,从数据科学家那里获得并以某种方式产生结果)的价值趋于为零。
没有数据工程师,这段代码永远不会成为一个项目,任何业务问题都无法得到有效解决。 数据工程师正在尝试将这一切转化为产品。
数据工程师应该了解的基本信息
因此,如果这份工作激发了您的光芒并且您充满热情 - 您可以学习它,您可以掌握所有必要的技能并成为数据工程领域真正的摇滚明星。 是的,即使没有编程技能或其他技术知识,您也可以实现这一目标。 这很难,但是有可能!
第一步是什么?
你应该对什么是什么有一个大概的了解。
首先,数据工程指的是计算机科学。 更具体地说,您必须了解有效的算法和数据结构。 其次,由于数据工程师与数据打交道,因此有必要了解数据库的原理及其背后的结构。
例如,传统的 B 树 SQL 数据库基于 B 树数据结构,以及现代分布式存储库中的 LSM 树和哈希表的其他修改。
*这些步骤基于一篇很棒的文章
1. 算法和数据结构
使用正确的数据结构可以显着提高算法的性能。 理想情况下,我们都应该在学校学习数据结构和算法,但这很少涉及。 无论如何,认识永远不会太晚。
以下是我最喜欢的学习数据结构和算法的免费课程:
另外,不要忘记 Thomas Corman 关于算法的经典著作 -
- 要提高您的技能,请使用
力码 .
您还可以通过 YouTube 上卡内基梅隆大学的精彩视频深入了解数据库的世界:
2.学习SQL
我们的一生都是数据。 为了从数据库中提取这些数据,您需要与它“说”相同的语言。
SQL(结构化查询语言)是数据域中的通信语言。 不管别人怎么说,SQL 已经存在了,仍然存在,并且将会存在很长一段时间。
如果您从事开发工作很长时间,您可能已经注意到有关 SQL 即将消亡的谣言会定期出现。 该语言开发于 70 年代初,至今仍深受分析师、开发人员和爱好者的欢迎。
如果不了解 SQL,就无法进行数据工程,因为您将不可避免地必须创建查询来检索数据。 所有现代大数据仓库都支持 SQL:
- 亚马逊Redshift
- 惠普Vertica
- 神谕
- SQL服务器
...以及许多其他人。
为了分析存储在分布式系统(例如 HDFS)中的大量数据,发明了 SQL 引擎:Apache Hive、Impala 等。看,它不会去任何地方。
如何学习SQL? 只要在实践中去做就可以了。
为此,我建议您查看一个出色的教程,顺便说一句,该教程是免费的,来自
这些课程的特别之处在于它们有一个交互式环境,您可以在浏览器中直接编写和运行 SQL 查询。 资源
3. Python 和 Java/Scala 编程
为什么你应该学习Python编程语言,我已经在文章中写过
- 阿帕奇·卡夫卡 (Scala)
- Hadoop、HDFS(Java)
- Apache Spark(斯卡拉)
- 阿帕奇卡桑德拉 (Java)
- HBase(Java)
- 阿帕奇蜂巢 (Java)
要了解这些工具的工作原理,您需要了解编写它们的语言。 Scala 的函数式方法可以让您有效地解决并行数据处理问题。 不幸的是,Python 无法夸耀速度和并行处理。 一般来说,了解多种语言和编程范例有利于解决问题的方法的广度。
要深入了解 Scala 语言,您可以阅读
至于Python,我相信
4.处理大数据的工具
以下是大数据领域最流行的工具列表:
- Apache Spark
- 阿帕奇卡夫卡
- Apache Hadoop(HDFS、HBase、Hive)
- Apache Cassandra
您可以在这个令人惊奇的文章中找到有关构建大型数据块的更多信息
- Hadoop 的介绍可以是
掌握 Hadoop 的完整指南(免费) . - 对我来说最全面的 Apache Spark 指南是 -
Spark:完整指南 .
5、云平台
至少了解一个云平台是数据工程师职位申请人的基本要求之一。 雇主更喜欢亚马逊网络服务,谷歌的云平台位居第二,微软Azure位列前三。
您必须熟悉 Amazon EC2、AWS Lambda、Amazon S3、DynamoDB。
6.分布式系统
使用大数据意味着存在独立运行的计算机集群,它们之间的通信通过网络进行。 集群越大,其成员节点发生故障的概率就越大。 要成为一名出色的数据科学家,您需要了解分布式系统的问题和现有解决方案。 这个地区既古老又复杂。
安德鲁·塔南鲍姆 (Andrew Tanenbaum) 被认为是该领域的先驱。 对于那些不害怕理论的人,我推荐他的书
我考虑一下
对于那些喜欢看视频的人,Youtube 上有一个课程
7. 数据管道
作为数据工程师,数据管道是不可或缺的。
大多数时候,数据工程师构建了一个所谓的数据管道,也就是说,他创建了一个将数据从一个地方传递到另一个地方的流程。 这些可以是自定义脚本,用于访问外部服务的 API 或进行 SQL 查询、扩充数据并将其放入集中式存储(数据仓库)或非结构化数据存储(数据湖)中。
总结:数据工程师的基本清单
总而言之,需要充分理解以下内容:
- 信息系统;
- 软件开发(敏捷、DevOps、设计技术、SOA);
- 分布式系统和并行编程;
- 数据库基础知识——规划、设计、操作和故障排除;
- 实验设计 - A/B 测试以证明概念、确定可靠性、系统性能并开发可靠的路径以快速提供良好的解决方案。
这些只是成为数据工程师的一些要求,因此请学习和理解数据系统、信息系统、持续交付/部署/集成、编程语言和其他计算机科学主题(并非所有学科领域)。
最后,我想说的最后但非常重要的事情。
成为数据工程师的道路并不像看起来那么简单。 他不原谅,他使人沮丧,你必须为此做好准备。 这段旅程中的某些时刻可能会迫使您放弃。 但这是真正的工作和学习过程。
只是不要从一开始就粉饰它。 旅行的重点是尽可能多地学习并为新的挑战做好准备。
这是我遇到的一张很棒的图片,很好地说明了这一点:
是的,请记住避免倦怠并休息。 这也是非常重要的。 祝你好运!
朋友们,你们觉得这篇文章怎么样? 我们邀请您参加
来源: habr.com