数据工程师:神话与现实
已发表: 2018-05-10从自动驾驶汽车到图像中的自动标记,数据科学已经走过了漫长的道路。 数据科学家和分析师已经成为任何组织不可或缺的一部分,因为他们增加了价值。 但是,老实说,数据科学家的好坏取决于他们使用的数据。 如今,大多数组织的数据以多种格式存储在众多平台上。 数据工程师的需求来了!

数据工程师是使这些数据对数据科学家和分析师可用的人。 数据工程师负责构建将大量数据转换为数据科学家可用的格式的管道。 他们大多在幕后工作,因此缺乏数据科学家/分析师的所有魅力——但请注意,他们对于任何组织的运作同样(如果不是更多)必不可少。
如果数据科学家是赛车手,那么数据工程师就是赛车制造商。 前者获得了沿着赛道加速的兴奋和在鼓掌的人群面前获胜的快感。 另一方面,后者获得了调整引擎和创造强大、强大的机器的乐趣。 赛车制造商使驾驶员的工作变得更容易(或更难,取决于制造商的质量)。
如何过渡到数据分析?
在这方面,数据工程师几乎是任何数据分析团队的无名英雄。 如果没有优秀的数据工程师,数据科学家只会摸不着头脑,在未格式化的数据中寻找线索。
让我们看看数据工程师的工作需要做什么。
为了更好地理解,我们假设您是 Swiggy 的竞争对手(我们将其命名为 Twiggy)的数据工程师。 您有一个用户可以在任何设备上使用并访问您的服务的应用程序。 他们点菜,订单被重定向到适当的餐厅,食物从那里取走,然后送到你手上。
要使此服务保持同步,您需要:
- 一款面向用户的移动应用
- 餐厅老板的移动应用程序
- 一个强大的服务器,可以一次处理多个请求。
正如您现在可能已经理解的那样,此应用程序将生成大量数据。 此外,您将需要一些数据存储:
- 包含用户和餐馆详细信息的数据库。
- 服务器访问日志。 这些将包括从应用程序向服务器发出的任何请求。
- 包含所有服务器端错误的服务器错误日志。
- 应用事件日志。 这些将包含有关用户或餐馆老板在应用程序中采取的操作的信息。
- 包含基于应用程序的错误的应用程序错误日志。
- 客户服务数据库。 这将包含有关您与客户互动的数据。
现在,假设您团队的一位数据科学家想要分析您的服务上的用户行为,并查看哪些行为与高消费用户相关。 为了帮助他们创建此功能,您需要结合服务器访问日志和应用程序事件日志中的所有信息。
您需要:
- 定期收集应用分析日志。
- 将应用分析日志与相关用户的服务器日志条目相结合。
- 开发一个返回任何用户的事件历史的 API。
那里有很多工作!
为此,您需要创建一个管道,该管道可以有效地实时摄取移动应用程序日志和服务器日志,解析它们,并将它们链接到适当的用户。 此外,您需要将解析后的日志存储在数据库中,以便 API 可以轻松查询它们。 您需要在负载均衡器后面启动许多服务器以解析传入日志。
您将遇到的大部分问题都与分布式系统和可靠性有关。 如果您有数百万台设备要收集日志并有动态需求(在下午,您会收到很多日志条目,但在午夜时不会那么多),您需要开发一个可以自动增加和减少服务器计数的系统取决于交通。
掌握数据科学的主要步骤
大致而言,通用数据工程管道中的操作经历以下阶段:
- 摄取:收集所需的数据。
- 处理:处理数据以获得期望的结果。
- 存储:存储结果以便更快地检索。
- 访问:启用工具来访问数据管道的结果。
数据工程师应具备以下领域的知识。
- 数据仓库:
- RDBMS,如 MySQL、MS SQL Server 等。
- NoSQL 数据库,如 HBase、MongoDB、CouchDB、Cassandra 等。
- 数据采集:
- RESTful API
- 数据建模知识和 SQL 专业知识。
- 数据转换:
- ETL 工具,如 Informatica、Datastage、Redpoint 等。
- 任何脚本语言,如 Python、Ruby、Perl 等。
让我们看看围绕这些数据工程师的生活和工作的一些神话和误解。
目录
误区 1:数据工程师从收集的数据中提取价值。
在收集数据和提取知识之间有很多事情要做。 数据工程师主要负责将数据转换为适合科学家分析和工作的形式。 在这方面,他们并没有从数据中提取任何价值,事实上,他们将数据放在盘子上,呈现给数据科学家,然后他们从中发现价值。

误区 2:数据工程师需要使所有数据保持原始状态。
慢慢看上面这句话,你就会意识到这句话的荒谬。 数据工程师全天处理传入的数据流。 这些数据需要立即清理并采取行动,以免它变得陈旧。 陈旧,我们的意思是缺乏洞察力和陈旧。 因此,数据工程师不会着手使所有数据都保持原始状态。 他们处理手头的数据以及手头问题所需的其他数据。 清理完整的数据集需要几个月的时间,到那时它将毫无用处。
数据科学统计学基础
误区 3:数据工程师将数据转储到现成的工具上,并享受干净/可行的数据作为输出。
请不要在任何数据工程师面前大声说出来。 曾经。 没有自尊的数据工程师会容忍这种公然的侮辱。 与任何其他工程师(软件、机械、化学等)一样,数据工程师需要始终保持思维上限。 数据工程中没有万能的方法,数据工程师需要塑造算法以不断适应他们的用例。 他们需要了解围绕其工作的最新技术和方法,以确保完美的效率。
误区四:数据工程师只是从事大数据工作的软件工程师。
软件工程师从事移动/网络应用程序开发。 他们的工作涉及许多不同的问题,困难在于管理任务——思考、交流和组织代码。 另一方面,数据工程师通常遇到的问题较少,但个别问题在技术上要困难得多。 从前景到技能,数据工程师的一切都与软件工程师完全不同。
谁是数据科学家、数据分析师和数据工程师?
获得世界顶尖大学的数据科学认证。 学习行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
数据工程类似于经典的 IT 角色吗?
对于计算机行业以外的人来说,“数据工程师”和“软件工程师”可能听起来可以互换,因为两者都很大程度上依赖于编程技能。 但实际上他们是不同领域的专家。 软件工程师的主要目标是创建用户友好的网站。 数据工程师建立用于存储、合并和检索数据的系统,然后软件开发人员使用这些系统来构建系统和应用程序。 数据工程师还可以为所有组织数据以及版本控制系统创建和维护持续集成和交付 (CI/CD) 管道,以确保整个基础架构的数据质量。
成为数据工程师是否必须具有大学教育或高级学位?
作为一名数据工程师,你不需要学位,尽管某些雇主可能更喜欢至少拥有学士学位的候选人。 没有任何学术课程或在线课程可以让您完全准备好创建可以从各种来源移动数据、更改数据并将其存储以供分析的数据系统。 事实上,最成功的数据工程师在与真实客户一起在现实世界中运作时,会在工作中学到很多东西。 但是,是的,对于数据工程师来说,掌握使用某些工具(如 Amazon Athena、Amazon Redshift、Apache Spark 等)的良好技能并了解数据管理最佳实践非常重要。
如何成为一名成功的数据工程师?
对于数据驱动的业务,数据工程至关重要,但数据工程师究竟是做什么的呢? 这是成为一名成功的数据工程师的途径
1. 精通编程:如果你想成为一名成功的数据工程师,首先要从复习你的编程基础开始。 Python 和 Scala 是该领域最常用的技术。
2. 学习如何自动化和编写脚本:学习自动化对数据工程师来说至关重要。 由于要对数据执行许多任务,这些任务可能很乏味或可能会定期发生。 一些重要的自动化工具是 Shell 脚本和 Shell 中的数据处理。
3. 知道如何使用你的数据库:这可以通过学习 SQL 和数据建模来完成。
4. 熟练的数据处理技术:要掌握数据处理技术,在将结果加载到目标数据库之前,学习如何批量和流处理数据非常重要。
