Apache Beam (Batch + strEAM) 是用于批处理和流式数据处理的模型和 API 集。它于 2016 年由 Google(与 Cloudera 和 PayPal)通过 Apache 孵化器项目开源。
Dataflow/Beam & Spark: A Programming Model Comparison - Cloud Dataflow 页面将 Beam API 与 Apache Spark 进行了对比,后者在为 Hadoop 世界及其他领域带来现代、灵活的 API 和一组批处理和流式优化技术方面取得了巨大成功。
Beam 试图通过一个模型更进一步,该模型可以轻松描述乱序处理的各个方面,这在结合批处理和流处理时通常是一个问题,如编程模型比较中所述。
从比较中引用,Dataflow 模型旨在以更模块化、更健壮且更易于维护的方式优雅地解决问题:
...所有数据处理从业者在构建管道时必须尝试回答的四个关键问题:
- 计算出什么结果?求和、连接、直方图、机器学习模型?
- 结果在事件时间的哪里计算?每个事件最初发生的时间是否会影响结果?结果是聚合在固定窗口、会话还是单个全局窗口中?
- 在处理时间内何时实现结果?在系统内观察每个事件的时间是否会影响结果?什么时候发出结果?推测,随着数据的发展?当数据迟到并且必须修改结果时?这些的某种组合?
- 结果的细化如何关联?如果有额外的数据到达并且结果发生变化,它们是否独立且不同,它们是否相互依赖,等等?
Beam 中描述的管道又可以在 Spark、Flink、Google 的云端数据流产品和其他“运行时”上运行,包括“直接”本地机器选项。
该架构支持多种语言。 Java SDK 现在可用。一个 Dataflow Python SDK 即将发布,其他的预计将用于 Scala 等。
查看源代码Mirror of Apache Beam