Apache Beam 2.3.0

我们很高兴推出 Beam 的新版本 2.3.0。此版本包含多个修复和新功能。

有关更多信息,请查看详细的版本说明。

新功能 / 改进

Beam 迁移到 Java 8

Beam 支持的 Java 版本现在是 Java 8。代码和示例已重构以利用该语言的多个优势,例如 lambda 表达式、流、改进的类型推断等。

Spark 运行器现在基于 Spark 2.x

Spark 运行器向前迁移到 Spark 2.x 开发路线,这将使运行器能够受益于改进的性能,并为未来与结构化流式 API 的兼容性打开大门。请注意,对 Spark 1.x 的支持已在此版本中结束。

Amazon Web Services S3 文件系统支持

Beam 之前已经通过 HadoopFileSystem 支持 AWS S3,但此版本带来了使用 S3 文件系统的相应性能优势的原生实现。

通用文件写入

此版本包含一个新的转换 FileIO.write() / writeDynamic(),它实现了一个通用的流畅且 Java8 友好的 API,用于使用 FileIO.Sink 写入文件。此 API 与 Beam 2.2 中的 DynamicDestinations API 具有类似的功能,但使用和扩展起来更加容易。写入文件的 DynamicDestinations API 已被它弃用,FileBasedSink 也是如此。

Python SDK 上支持可分割 DoFn

此版本为 Python SDK 添加了 Splittable DoFn API,并为 Python 流式 DirectRunner 添加了 Splittable DoFn 支持。

可移植性

在 Google Cloud Dataflow 以外的运行器上执行 Python 和在任何运行器上执行 Go SDK 的工作正在持续进行。

其他修复

SDK

  • MapElements 和 FlatMapElements 支持使用新接口 Contextful.Fn 使用边输入。对于库作者来说,这个接口是用户代码回调(可能使用边输入)的首选选择。
  • 引入了 Reify 转换系列,用于在各种 Beam 实体的显式表示和隐式表示之间进行转换。
  • 引入了两种用于数据近似草图的转换:Count-Min Sketch(近似元素频率估计)和 HyperLogLog(近似基数估计)。

运行器

  • Dataflow 上的暂存文件显示进度
  • Flink 运行器现在基于 Flink 版本 1.4.0

I/O

  • BigtableIO 现在支持 ValueProvider 配置
  • BigQueryIO 支持将有界集合写入使用分区装饰器的表
  • KafkaIO 迁移到 1.0 版本(它仍然向后兼容版本 >= 0.9.x.x)
  • 添加了用于 VCF 文件的 IO 源(Python)
  • 在 JdbcIO.write() 中对死锁添加了回退支持,并改进了连接
  • 改进了 KinesisIO.read() 的性能
  • 对 TikaIO 进行了许多改进

贡献者列表

根据 git shortlog,以下 78 人为 2.3.0 版本做出了贡献。感谢所有贡献者!

Ahmet Altay, Alan Myrvold, Alex Amato, Alexey Romanenko, Ankur Goenka, Anton Kedin, Arnaud Fournier, Asha Rostamianfar, Ben Chambers, Ben Sidhom, Bill Neubauer, Brian Foo, cclauss, Chamikara Jayalath, Charles Chen, Colm O hEigeartaigh, Daniel Oliveira, Dariusz Aniszewski, David Cavazos, David Sabater, David Sabater Dinter, Dawid Wysakowicz, Dmytro Ivanov, Etienne Chauchot, Eugene Kirpichov, Exprosed, Grzegorz Kołakowski, Henning Rohde, Holden Karau, Huygaa Batsaikhan, Ilya Figotin, Innocent Djiofack, Ismaël Mejía, Itamar Ostricher, Jacky, Jacob Marble, James Xu, Jean-Baptiste Onofré, Jeremie Lenfant-Engelmann, Kamil Szewczyk, Kenneth Knowles, Lukasz Cwik, Łukasz Gajowy, Luke Zhu, Mairbek Khadikov, María García Herrero, Marian Dvorsky, Mark Liu, melissa, Miles Saul, mingmxu, Motty Gruda, nerdynick, Neville Li, Nigel Kilmer, Pablo, Pawel Kaczmarczyk, Petr Shevtsov, Rafal Wojdyla, Raghu Angadi, Robert Bradshaw, Robert Burke, Romain Manni-Bucau, Ryan Niemocienski, Ryan Skraba, Sam Whittle, Scott Wegner, Shashank Prabhakara, Solomon Duskis, Thomas Groh, Thomas Weise, Udi Meiri, Valentyn Tymofieiev, wtanaka.com, XuMingmin, zhouhai02, Zohar Yahav, 琨瑜.