Apache Beam 2.10.0

我们很高兴推出 Beam 的新版本 2.10.0。此版本包含改进和新功能。有关此版本的详细信息,请访问 下载页面

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

亮点

依赖升级/变更

  • FlinkRunner:Flink 1.5.x/1.6.x/1.7.x
  • Java:AutoValue 1.6.3
  • Java:Jackson 2.9.8
  • Java:google_cloud_bigdataoss 1.9.13
  • Java:Apache Commons Codec: 1.10
  • Python:avro>=1.8.1,<2.0.0; python_version < “3.0”
  • Python:avro-python3>=1.8.1,<2.0.0; python_version >= “3.0”
  • Python:bigdataoss_gcsio 1.9.12
  • Python:dill>=0.2.9,<0.2.10
  • Python:gcsio 1.9.13
  • Python:google-cloud-pubsub 0.39.0
  • Python:pytz>=2018.3
  • Python:pyyaml>=3.12,<4.0.0
  • MongoDbIO:mongo 客户端 3.9.1

I/O

  • Python SDK 的 ParquetIO
  • HadoopOutputFormatIO:添加批处理支持
  • HadoopOutputFormatIO:添加流式支持
  • MongoDbIO:添加投影
  • MongoDbIO:添加对使用自签名 SSL 的服务器的支持
  • MongoDbIO 添加排序选项(即使出现错误也插入文档)
  • KafkaIO:添加写入多个主题的支持
  • KafkaIO:添加使用 ProducerRecord 的写入支持
  • CassandraIO:添加删除数据的能力
  • JdbcIO:在 JdbcIO.write() 中添加对 Statement 的 ValueProvider 支持,以便可以对其进行模板化

新功能/改进

  • FlinkRunner:支持 Flink 配置目录
  • FlinkRunner:主 URL 现在支持 IPv6 地址
  • FlinkRunner:可移植运行器保存点/升级支持
  • FlinkRunner:可以针对不同的 Flink 版本进行构建
  • FlinkRunner:在可移植运行器中将指标发送到 Flink
  • Java:迁移到供应商提供的 gRPC(与用户 gRPC 不冲突,更小的 jar 包)
  • Java:迁移到供应商提供的 Guava(与用户 Guava 不冲突,更小的 jar 包)
  • SQL:支持通过侧输入将无界源加入到有界源(并且不再对左连接和右连接敏感)
  • SQL:支持表宏
  • 架构:支持 Avro,并自动注册架构
  • 架构:自动注册 AutoValue 类别的架构

错误修复

  • Watch PTransform 已修复(影响 FileIO)
  • FlinkRunner:如果 GroupByKey 包含空值,则不再失败(仅限流式模式)
  • FlinkRunner:不再过晚准备要分段的文件
  • FlinkRunner:为使用运行器确定的分段的写入设置分段数量
  • FlinkRunner:防止 CheckpointMarks 未被确认
  • 架构:为 POJO、Avro 和 JavaBean 生成的行对象如果包装类是包私有的,应该可以工作
  • 架构:架构中的嵌套集合类型在转换为 POJO 时不再导致 NullPointerException
  • BigQueryIO:现在可以正确处理 quotaExceeded 错误
  • BigQueryIO:现在可以在某些非常大的加载作业中正确处理触发
  • FileIO 和其他基于文件的 I/O:Beam LocalFilesystem 现在匹配 Windows 中的通配符模式
  • SQL:连接不再将时间戳移动到窗口的末尾
  • SQL:缺少一些传递依赖关系
  • SQL:JDBC 驱动程序不再中断与其他 JDBC 源的交互
  • pyarrow 在 Windows Python 2 上受支持

弃用

  • 弃用 HadoopInputFormatIO

贡献者列表

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

Ahmet Altay, Alan Myrvold, Alex Amato, Alexey Romanenko, Anton Kedin, Rui Wang, Andrew Brampton Andrew Pilloud, Ankur Goenka, Antonio D’souza, Bingfeng Shu, Boyuan Zhang, brucearctor, Cade Markegard, Chaim Turkel, Chamikara Jayalath, Charles Chen, Colm O hEigeartaigh, Cory, Craig Chambers, Cristian, Daniel Mills, Daniel Oliveira, David Cavazos, David Hrbacek, David Moravek, Dawid Wysakowicz, djhworld, Dustin Rhodes, Etienne Chauchot, Fabien Rousseau, Garrett Jones, Gleb Kanterov, Heejong Lee, Ismaël Mejía, Jason Kuster, Jean-Baptiste Onofré, Jeff Klukas, Joar Wandborg, Jozef Vilcek, Kadir Cetinkaya, Kasia Kucharczyk, Kengo Seki, Kenneth Knowles, lcaggio, Lukasz Cwik, Łukasz Gajowy, Manu Zhang, marek.simunek, Mark Daoust, Mark Liu, Maximilian Michels, Melissa Pashniak, Michael Luckey, Mikhail Gryzykhin, mlotstein, morokosi, Niel Markwick, Pablo Estrada, Prem Kumar Karunakaran, Reuven Lax, robbe, Robbe Sneyders, Robert Bradshaw, Robert Burke, Ruoyun Huang, Ryan Williams, Sam Whittle, Scott Wegner, Slava Chernyak, Theodore Siu, Thomas Weise, Udi Meiri, [email protected], Valentyn Tymofieiev, Won Wook SONG, Wout Scheepers, Xinyu Liu, Yueyang Qiu, Zhuo Peng