Apache Beam 2.25.0

我们很高兴推出 Apache Beam 的新版本 2.25.0。 此版本包括改进和新功能。 请查看 下载页面 以获取此版本的详细信息。

有关 2.25.0 中更改的更多信息,请查看 详细的发布说明

亮点

  • 对于基于 Java 的运行器(Direct、Flink、Jet、Samza、Twister2),可分割的 DoFn 现在是执行 Read 变换的默认选项。 Read 变换的预期输出保持不变。 用户可以使用 --experiments=use_deprecated_read 选择退出。 Apache Beam 社区正在寻求对此更改的反馈,因为社区计划将此更改永久化,不再提供选择退出选项。 如果你遇到需要选择退出的问题,请发送电子邮件至 [email protected],并在主题行中明确提及 BEAM-10670,并说明你为何需要选择退出。(Java) (BEAM-10670)

I/Os

  • 为 Java 的 KinesisIO 添加了跨语言支持,现在可在 Python 模块 apache_beam.io.kinesis 中使用 (BEAM-10138, BEAM-10137).
  • 为 SnowflakeIO 更新 Snowflake JDBC 依赖项 (BEAM-10864)
  • 为 Java 的 SnowflakeIO.Write 添加了跨语言支持,现在可在 Python 模块 apache_beam.io.snowflake 中使用 (BEAM-9898).
  • 为 Java 的 ElasticsearchIO#Write 添加了删除功能。 现在,Java 的 ElasticsearchIO 可用于使用 withIsDeleteFn 函数选择性地删除文档 (BEAM-5757).
  • Java SDK:为 InfluxDB 添加了新的 IO 连接器 - InfluxDbIO (BEAM-2546).

新功能/改进

  • ReadFromBigQuery 添加了对 JSON 解码器中的可重复字段的支持。(Python) (BEAM-10524)
  • 为 Python SDK 添加了一个选择加入的、性能驱动的运行时类型检查系统 (BEAM-10549)。 更多详细信息将在即将发布的 博文中介绍。
  • 使用类型化的 PCollection,为使用类型化 PCollection 的 PTransform 添加了对 Python 3 类型注释的支持 (BEAM-10258)。 更多详细信息将在即将发布的 博文中介绍。
  • 改进了交互式 Beam API,现在记录流式作业会启动一个长时间运行的后台记录作业。 运行 ib.show() 或 ib.collect() 会从记录中采样 (BEAM-10603).
  • 在交互式 Beam 中,ib.show() 和 ib.collect() 现在具有 “n” 和 “duration” 参数。 这意味着仅读取最多 “n” 个元素,以及从记录中读取数据最多 “duration” 秒 (BEAM-10603).
  • Dataframes 支持的初步预览。 另请参阅 apache_beam/examples/wordcount_dataframe.py 中的示例
  • 修复了对 Python SDK 中 @ptransform_fn 装饰器上的类型提示的支持。 (BEAM-4091) 此功能尚未默认启用,以保持向后兼容性; 使用 --type_check_additional=ptransform_fn 标志启用它。 它可能会在 Beam 的未来版本中默认启用。

重大更改

  • 不再支持 Python 2 和 Python 3.5 (BEAM-10644, BEAM-9372).
  • 允许使用 Pandas 1.x。 仍然可以使用旧版本的 Pandas,但测试可能没有那么充分。

弃用

  • Python 变换 ReadFromSnowflake 已从 apache_beam.io.external.snowflake 移动到 apache_beam.io.snowflake。 上述路径将在未来版本中删除。

已知问题

  • 当在捆绑包中间设置较早的时间时,Dataflow 流式计时器再次没有严格的时间顺序,因为针对 BEAM-8543 的修复引入了更严重的错误,并且已被回滚。
  • 默认压缩器更改会破坏 Dataflow python 流式作业更新兼容性。 如果作业更新至关重要,请使用 python SDK 版本 <= 2.23.0 或 > 2.25.0。(BEAM-11113)

贡献者列表

根据 git shortlog,以下人员贡献了 2.25.0 版本。 感谢所有贡献者!

Ahmet Altay, Alan Myrvold, Aldair Coronel Ruiz, Alexey Romanenko, Andrew Pilloud, Ankur Goenka, Ayoub ENNASSIRI, Bipin Upadhyaya, Boyuan Zhang, Brian Hulette, Brian Michalski, Chad Dombrova, Chamikara Jayalath, Damon Douglas, Daniel Oliveira, David Cavazos, David Janicek, Doug Roeper, Eric Roshan-Eisner, Etta Rapp, Eugene Kirpichov, Filipe Regadas, Heejong Lee, Ihor Indyk, Irvi Firqotul Aini, Ismaël Mejía, Jan Lukavský, Jayendra, Jiadai Xia, Jithin Sukumar, Jozsef Bartok, Kamil Gałuszka, Kamil Wasilewski, Kasia Kucharczyk, Kenneth Jung, Kenneth Knowles, Kevin Puthusseri, Kevin Sijo Puthusseri, KevinGG, Kyle Weaver, Leiyi Zhang, Lourens Naudé, Luke Cwik, Matthew Ouyang, Maximilian Michels, Michal Walenia, Milan Cermak, Monica Song, Nelson Osacky, Neville Li, Ning Kang, Pablo Estrada, Piotr Szuberski, Qihang, Rehman, Reuven Lax, Robert Bradshaw, Robert Burke, Rui Wang, Saavan Nanavati, Sam Bourne, Sam Rohde, Sam Whittle, Sergiy Kolesnikov, Sindy Li, Siyuan Chen, Steve Niemitz, Terry Xian, Thomas Weise, Tobiasz Kędzierski, Truc Le, Tyson Hamilton, Udi Meiri, Valentyn Tymofieiev, Yichi Zhang, Yifan Mai, Yueyang Qiu, annaqin418, danielxjd, dennis, dp, fuyuwei, lostluck, nehsyc, odeshpande, odidev, pulasthi, purbanow, rworley-monster, sclukas77, terryxian78, tvalentyn, yoshiki.obata