2020年的数据工程


2020年的数据工程文章插图
> Photo by Pixabay from Pexels
令人难以置信的是 , 数据处理工具和技术的发展日新月异 。随之 , 数据工程学科的性质也在发生变化 。我今天使用的工具与我十年甚至五年前所使用的工具有很大的不同 , 但是 , 今天仍然吸取了很多教训 。
在数据工程成为事物和数据科学家成为21世纪最性感的工作之前 , 我就已经开始在数据领域工作 。六年前 , 我"正式"成为一名大数据工程师 , 并且我第一手知道具有"传统"数据开发背景的开发人员在此过程中所面临的挑战 。当然 , 对于软件工程师来说 , 这种过渡也不容易 , 只是有所不同 。
即使技术在不断变化-这对于从事技术行业的每个人来说都是现实-我必须学习的一些技能仍然具有相关性 , 但经常被刚开始向数据工程过渡的数据开发人员所忽略 。这些通常是软件开发人员常理所当然的技能 。
在本文中 , 我将讨论数据工程的发展以及当今"传统"数据开发人员可能需要学习哪些技能(提示:它不是Hadoop) 。
数据工程师的诞生大数据热潮之前的数据团队由商业智能和ETL开发人员组成 。典型的BI / ETL开发人员活动涉及将数据集从位置A移动到位置B(ETL) , 并使用该数据构建Web托管的仪表板(BI) 。每个活动都有专门的技术 , 其知识集中在IT部门内 。但是 , 除此之外 , BI和ETL的开发与软件工程无关 , 该学科在本世纪初已日趋成熟 。
随着数据量的增长和对数据分析的兴趣的增加 , 在过去的十年中 , 发明了新技术 。其中一些人死亡 , 另一些人被广泛采用 , 从而改变了对技能和团队结构的要求 。随着现代BI工具允许分析人员和业务人员在IT团队的最少支持下创建仪表板 , 数据工程已成为一门新学科 , 将软件工程原理应用于新的ETL开发中 。
挑战
2020年的数据工程文章插图
> Photo by Alexander Dummer from Pexels
创建数据管道可能听起来很容易 , 但是在大数据规模上 , 这意味着将十多种不同的技术(甚至更多)融合在一起 。数据工程师必须深入了解各种技术 , 选择合适的工具来完成工作 , 并用Scala , Java或Python编写代码才能创建弹性和可扩展的解决方案 。数据工程师必须知道他们的数据 , 才能创建受益于分布式处理功能的作业 。数据工程师必须了解基础架构 , 才能确定作业失败的原因 。
从概念上讲 , 这些数据管道中的许多都是典型的ETL作业-从许多数据源收集数据集 , 将它们放入集中的数据存储中以备分析 , 并将其转换为商业智能或机器学习 。但是 , "传统" ETL开发人员没有在大数据世界中执行这些任务所需的技能 。
今天还是这样吗?我阅读了许多描述数据工程师应具备的技能的文章 。他们中的大多数建议使用学习技术 , 例如Hadoop , Spark , Kafka , Hive , HBase , Cassandra , MongoDB , Oozie , Flink , Zookeeper , 并且清单还在继续 。
【2020年的数据工程】虽然我同意知道这些技术不会有任何伤害 , 但我发现在今天的许多情况下 , 到2020年 , "了解它们"就足够了–它们旨在解决哪些特定用例 , 应该或不应该在哪里使用 不会被使用 , 还有什么替代品 。近年来 , 快速发展的云技术已经产生了各种各样的云原生应用程序和服务 。就像几年前现代BI工具使更广泛的业务更容易进行数据分析一样 , 现代的云原生数据堆栈简化了数据提取和转换任务 。
我不认为像Apache Spark这样的技术在未来几年将不再流行 , 因为它们非常适合复杂的数据转换 。
尽管如此 , Snowflake和Google BigQuery等云数据仓库的采用率很高 , 这表明它们具有一定的优势 。其中之一是Spark需要高度专业化的技能 , 而云数据平台之上的ETL解决方案甚至严重依赖于SQL技能 , 即使对于大数据也是如此-这样的角色更容易填补 。
数据开发人员需要具备哪些技能?
2020年的数据工程文章插图
> Photo by Pixabay from Pexels
BI / ETL开发人员通常对数据库基础知识 , 数据建模和SQL有深刻的理解 。这些技能在今天仍然很有价值 , 并且大部分可以转移到现代数据堆栈中 , 比Hadoop生态系统更精简 , 更容易学习 。
以下是我经常观察到的三个方面 , "传统"数据开发人员的知识方面存在差距 , 因为长期以来 , 他们没有软件工程师所拥有的工具和方法 。了解并解决这些差距不会花费很多时间 , 但是可能会使向新工具集的过渡更加顺畅 。