「数据科学家」和「数据工程师」的区别
数据科学家 VS 数据工程师
从技术需求的角度说,一张韦恩图或许可以直观解释:
image从工作职责的角度说:
数据科学家的工作基于数据分析。他们需要洞悉数据背后的价值,对数据进行更深度的清洗和处理,并用各种各样的高级算法对数据进行深层分析。除此之外,他们还具有很强的叙事能力和数据可视化能力。
数据工程师需要开发能对数据进行整合、存储和提取的系统,并从软件工程师开发的应用和系统中获取数据。
Indeed 和 Glassdoor 招聘网分析报告显示,数据工程师相关岗位的平均年薪接近 10 万美元,岗位空缺是数据科学家的 5 倍。很多公司都找不到足够的数据工程师来处理与日俱增的数据。
新时代的数据工程师
但随着时代的发展,各种新技术和产品的出现,数据工程师这个角色也发生了较大的变化。几年前他们主要是管理数据进出数据库,在 SQL 或 Procedural SQL 中创建管道,并在数据仓库中加载数据,创建统一、标准化的数据集结构以供后期分析。但 2018 年以来,他们不再仅仅为数据的后期分析提供支持,还要负责整个数据流,保证任何数据都是可正常操作的,并且对于使用者来说是可获取的。
所谓的新技术和新产品,主要包括:大数据及其相关技术、DOE、机器学习、Spark&Real-time、云开发和无服务器等。
大数据:2006 年,Hadoop 的开源大大改变了数据格局,存储大量数据变得更容易,更便宜,Hadoop 与传统的 RDBMS 数据库不同,在处理数据时并不需要太多结构化。最初,在 Hadoop 上进行开发非常复杂,需要用 Java 开发 Map Reduce 作业。直到 2010 年 Hive 开源,更多传统数据工程师才能更容易进入这个大数据时代。
DOE:随着大数据的发展,大型互联网公司正面临着缺少运行复杂数据流工具的挑战。Spotify 在 2012 年开源 Luigi,在 2015 年开源 Airbnb Airflow,这些编排引擎本质上是把数据流作为代码。Python 是大多数编排引擎的编译语言。
机器学习:在 Hadoop 出现之前,我们通常在一台机器上训练机器学习模型,并且以非常特殊的方式进行应用。对于大型互联网公司而言,需要利用先进的软件开发技术以更好地训练机器学习模型并应用到生产中,比如使用 Mahout 之类的框架。
Spark&Real-time:这是 2014 年 Spark 发布的用于 python 的 MLlib,它将大数据上的机器学习计算民主化。Spark 为数据工程师提供了一种轻松处理流数据的方法,为实时处理提供了一个窗口。
云开发和无服务器:迁移到云对数据工程师而言有多重影响。「云」打破了物理限制,对于大多数用户而言,它意味着存储和计算趋于无限化。这样一来,就不再需要对服务器进行不断的优化。而且,通过允许扩展和减少资源来实现云,使得处理数据工程中典型的高峰批处理作业变得更加容易。