2011年,我作为一个商业智能工程师加入Facebook,而当我三年后离开的时候,已经成为了一个数据工程师。
得到数据工程师这个头衔这并不是因为我在这期间获得了提升或者是分配到了这个新的角色,相反,是因为Facebook意识到了我们所做的工作已经超越了传统的经典商业智能,而为我们这个团队创造出了这样全新的角色。
非常幸运,我的团队走在了变革的前沿阵地。我们正在开发新的技能、新的开发方式、新的工具,以及更多反传统的方法。
我们是行业先锋,我们是数据工程师!
数据工程师在许多地方很像数据科学家,我们写代码,我们对数据分析很敏感,而且对数据可视化非常感兴趣。
但在许多地方我们又不像数据科学家,由于受到我们的本职工作—软件工程的影响,而数据工程师们则更喜欢建立工具、基础设施、框架和服务。事实上,有很多人认为,相比于数据科学,数据工程与软件工程之间还要更亲密一些。
在较小的企业环境中,人们倾向于使用Amazon或Databricks提供的托管服务,或者从Cloudera或Hortonworks这样的公司获得支持,在这种情况下,企业一般不需要专职的数据工程师,而让这些托管商来承担数据工程的任务。
但是在大型的业务环境中,由于数据基础设施团队不断增长的需求,企业就会倾向于创建这样一个正式的角色,专业化管理这些工作量。在这些大型企业中,自动化完成数据工程处理的任务就落在了数据工程师和数据基础设施团队的肩上,对于更高层次的问题和任务,还需要各个数据工程师团队们协作解决,这是很常见的情况。
数据仓库是专门用于查询和分析事务数据的副本。
-Ralph Kimball
数据仓库是为支持管理决策过程而建立的面向主题的、集成的、随时间变化的稳定数据集合。
- Bill Inmon
这是两位数据工程大师很早以前对数据仓库的描述,确实是千真万确,和从前一样,数据工程师所负责的工作就是从各种方面建设和运营数据仓库。数据工程师的工作重点就是数据仓库,一切工作都以数据仓库为中心。
数据工程团队拥有数据仓库认证高质量区域的管理权限。举例来说,在Airbnb,有一套由数据工程团队管理的“核心”架构。在那里,服务级别协议(SLA)有清楚的定义并受到检测,命名规则要严格遵守,业务元数据和文档都是最高质量的,相关的管道代码也要遵循一套良好定义的最佳实践。
近年来,随着业务数据变得比以往任何时候都更具战略性,企业们开始为它们的数据基础设施投入大笔的预算。这也要求数据工程师在对数据处理和存储的性能调整和优化时变得愈发的理性。由于企业很少在这方面收缩预算,因此数据优化工作的成果一般是用能否以相同数量的资源实现更多功能来衡量的,或者是尽量在资源利用率方面体现出线性指数增长。
对于数据工程师来说,建立可调整规模的基础设施是绝对必要的,而且在任何时候都要有资源意识。
数据集成--通过数据交换整合业务与系统的实践和以往一样重要,而且越发具有挑战性。
由于软件作为服务(SaaS)成为企业运营的新标准,因此在数据系统中同步相关数据的需求变得越来越重要。不仅SaaS需要及时的数据更新功能,而且我们也经常希望将对方已经整合过的数据并入到我们的数据仓库,便于对数据进行统一分析。
数据工程师一般要在相对高级别的抽象层完成工作,在某些情况下,这意味着数据工程师、数据科学家或分析师们可以建立各种服务和工具,用来自动化完成某些手工操作,提高工作效率,降低工作量。
以下列出的都是一些有效的自动化服务和工具,数据工程师和数据基础设施工程师可以创建并使用:
数据摄入(data ingestion):围绕数据库建立服务与工具,加载日志、从外部存储或APIs获取数据。
度量计算(metric computation):编写计算与总结数据增长及分割的相关计量框架。
异常检测(anomaly detection):自动化处理数据消耗,并在异常事件发生或出现明显趋势变化时发出警报。
元数据管理(metadata management):编写识别元数据生成与消耗的工具,便于在数据仓库中以及围绕数据仓库发现重要信息。
实验(experimentation):编写A/B测试和实验框架,这通常是企业数据分析的重要数据工程组件。
仪器工具(instrumentation):从日志事件和与事件相关的属性开始进行分析,数据工程师需要确保在上游就能捕获到高质量数据。
会话化(sessionization):编写管道工具,专用于及时分析行为序列,帮助数据分析师理解用户行为。
像软件工程师一样,数据工程师也需要不断寻找与创建自动化工具,尽量让机器完成庞大的人工工作量,帮助自己爬上数据分析的复杂阶梯。
SQL语言:如果英语是人类通用的商务语言,那么SQL就是数据世界的通用语言。数据工程师应该能够极其熟练的使用SQL,并且善于编写复杂的查询技巧。
数据建模技术:对于数据工程师而已,实体关系建模能力应该包括清晰的认识反射,对标准化的清晰理解,以及对反常情况的敏锐直觉。数据工程师应该熟悉多维度建模以及相关的概念与语义研究。
ETL设计:编写高效的、有弹性的并且“能进化”的ETL也是关键技能。
工程架构:像任何领域的专家一样,数据工程师需要从更高的层次理解工作范围内的大多数工具、平台、类库及其它资源。掌握各种不同种类数据库的性质、使用情况、计算引擎、流处理器,消息队列、工作流协调、序列化格式和其它相关技术。
总而言之
在过去5年中,我非常有幸能够在硅谷的互联网领袖企业Airbnb、Facebook和雅虎中从事数据工作,并能与其他硅谷巨头比如Google、Netflix、Amazon、Uber、Lyft的数据团队们进行大量的互动。我观察到“数据工程”正在发生演变,这在数据工程师中已经成为越来越普遍的共识,因此我觉得需要将我的这些发现分享出去,希望我的文章可以成为数据工程行业的变革宣言,引起相关技术社区的关注。
作者介绍
Maxime Beauchemin
Airbnb杰出数据工程师,Apache Airflow与Superset项目主要创建人
原文标题:The Rise of the Data Engineer
文章翻译:陈小美
编辑:熊小妹
文章链接:https://medium.freecodecamp.com/the-rise-of-the-data-engineer-91be18f1e603#.w5989wfhg