在过去的十年里,无数企业想通过雇佣大量的数据科学家和机器学习科学家,从他们的分析的数据中提取有价值的信息,帮助公司做出明智的决策,并构建数据驱动的产品。
不幸的是,这种策略在很多公司都失败了,因为在很多情况下,预测的模型都因为数据质量低而受损,数据常常是分散的,有时甚至不能进行优化分析。
此外,即便模型表现良好,想实现他们,并部署到生产环境中也会是一场噩梦,因为在处理数据管道时,缺乏可扩展的架构、自动化和最佳实践的应用,而这就正好是数据工程发挥作用的地方。
数据工程领域有一套技术和原则,这些技术和原则可以让工程师通过配置所需的流程,从不同的来源收集数据。此外,数据工程师有责任确保清除掉任何损坏的数据,以便业务用户能够访问干净和准确的信息。
与此同时,在现代数据驱动的企业中,数据工程师是最有价值的人之一,他们的目标是通过利用他们最有价值的资产(也就是数据)来构建或增强产品。
为了以高效、可扩展、经济的方式实现这一目标,数据工程师必须使用正确的工具,这些工具最终会帮助他们构建企业所需的工具。
数据库
数据工程师要能够处理和执行数据库系统上的某些操作,包括SQL和NoSQL数据库。数据库是存放大量数据的地方,不同的用户可以在这里查询和提取信息,甚至其他应用程序也可以利用数据库作为存储手段,甚至查找特定的记录。
对于大型的系统,数据工程师必须建立和维护数据仓库和数据湖。
(大)数据处理工具
如上文所述,数据工程师应该设置所有所需的流程,以便清理和汇总来自多个来源的数据。因此,利用可扩展、高效和容错方式实现此类过程的工具至关重要。
在几乎每个行业中都被普遍使用的一个技术就是Apache Spark。它是可扩展计算中使用最广泛的引擎之一,可以执行数据工程任务,如批处理、ML模型训练和大规模的数据分析。此外,它支持多种语言,包括Python、Scala、Java甚至R。
实时数据流
除了对历史数据进行传统的批处理外,许多公司还需要实时和大规模地处理数据。例如,考虑在某个事件发生时,应该执行特定操作的用例。数据工程师应该能够构建事件流架构,使这些特性得以实现。
在我看来,实时数据流之王是Apache Kafka。这项技术最初是作为LinkedIn中的消息队列实现的,并迅速发展成为一个开源的实时数据流平台。简而言之,Kafka可以用来生成和消费事件流和临时消息存储的数据。此外,它还可以用于实时处理事件流,甚至可以用于追溯处理。
在上一节中,我们讨论了Apache Spark以及它如何大规模地处理批处理。除了批处理之外,Spark本身也可以使用Spark streaming处理系统进行数据流处理,该系统既支持批处理工作负载,也支持流处理工作负载。
这个Spark API扩展让数据工程师可以执行来自多个来源的实时数据处理,包括Apache Kafka和Amazon Kinesis。
日程安排工具
其他对数据工程师非常有用的重要工具是调度机制,它可以在特定的时间间隔,执行特定的管道或操作。
此外,当涉及到执行多个相互依赖的操作时,这些工具还可以简化你的工作。例如,你不能在特定数据加载完成之前运行分析操作。因此,调度工具可以帮助你确保当操作A被执行并成功完成,操作B也会被执行。
调度工具的一个例子是Apache Airflow,它是最常用的平台之一,用于设置、调度、执行和监控数据工作流。
监控工具和警报
最后,Data Engineer工具集的另一个重要方面是监控。在今天的文章中,我们讨论了许多需要启动和运行的概念和工具,以便以可扩展、及时的方式执行某些流程。
因此,重要的是要有适当的机制,使我们能对各种系统执行“健康检查”。此外,当发现异常情况时,通知特定目标组(例如 DevOps 或开发团队)——比如 Spark 节点的异常,甚至整个集群停机的异常。
大多数现代数据工程工具都可以配置为高可用性——但这并不意味着集群在任何给定时间都是100%健康的。高可用性仅仅意味着即使发生了不寻常的事情,系统仍然可以不间断地工作。但是我们应该有一个360⁰的系统健康水平,以便在问题出现时让进行调查的团队参与进来。
总结
数据工程处在企业的核心位置,这些企业的目标是利用数据来发布新产品、更新现有产品、并根据长期甚至实时收集的数据得出的结论,来改进他们的整体决策。
因此,对公司来说非常重要的是,要招募合适的人来组建团队,帮助企业将他们的产品和决策提升到一个新的水平。
在今天的文章中,我们讨论了一些数据工程师应该使用的最重要的工具,用高效和优雅的方式执行他们的日常任务,实现可扩展和经济高效的解决方案。感谢你的阅读!
原文作者:Giorgos Myrianthous
翻译作者:过儿
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/data-engineer-tools-c7e68eed28ad