Apache Beam 2.52.0

Beamの新しい2.52.0リリースを発表できることを嬉しく思います。このリリースには、改良と新機能の両方が含まれています。このリリースのダウンロードページをご覧ください。

2.52.0の変更の詳細については、詳細なリリースノートをご覧ください。

ハイライト

  • 以前非推奨とされていたAvro依存コード(Beamリリース2.46.0)が、Java SDKの「コア」パッケージから最終的に削除されました。代わりに`beam-sdks-java-extensions-avro`を使用してください。これにより、BeamのAvro拡張機能は最新のAvroバージョンを既にサポートしており、これを処理する必要があるため、Beam「コア」における潜在的な破壊的変更なしに、ユーザーコードでAvroバージョンを簡単に更新できます。(#25252)。
  • Apache Beamリリースプロセスの一部として、Java 21 SDKコンテナイメージの公開が désormaisサポートされています。(#28120
    • Direct RunnerとDataflow Runnerは、Java 21でパイプラインを実行することをサポートしています(テストが完全に設定されるまでは実験的です)。他のランナー(Flink、Spark、Samzaなど)のサポート状況は、ランナープロジェクトによって異なります。

新機能/改良点

  • Flinkランナーに`UseDataStreamForBatch`パイプラインオプションを追加しました。これをtrueに設定すると、FlinkランナーはDataStream APIを使用してバッチジョブを実行します。デフォルトではfalseに設定されているため、バッチジョブは引き続きDataSet APIを使用して実行されます。
  • Java SDKの場合、グラフが10MBより大きい場合、DataflowRunnerのExperimentsオプションの1つである`upload_graph`は不要になりました。(PR#28621
  • 状態とサイド入力キャッシュがデフォルトで100MBに有効化されました。ユーザー状態APIとサイド入力のキャッシュサイズを指定するには、`--max_cache_memory_usage_mb=X`を使用してください。(Python)(#28770
  • Beam YAML安定版リリース。Beamパイプラインは désormaisYAMLを使用して記述でき、予備的なIOとターンキー変換を含むBeam YAMLフレームワークを活用できます。詳細については、YAMLルートフォルダとREADMEを参照してください。

破壊的変更

  • すべてのAvro依存クラスが最終的に`extensions/avro`に移動されたため、`org.apache.beam.sdk.io.CountingSource.CounterMark`はデフォルトのコーダーとしてカスタム`CounterMarkCoder`を使用します。`CounterMark`に`AvroCoder`を使用する必要がある場合は、回避策として、「古い」`CountingSource`クラスのコピーをプロジェクトコードに配置して直接使用してください。(#25252
  • コマンドライン引数の潜在的な競合を回避するために、`FirestoreOptions`で`host`を`firestoreHost`に名前変更しました。(Java)(#29201
  • `SnappyCoder`を使用する変換は、一部のランナーで同じ変換の以前のバージョンとの互換性がありません。これには、PubSubIOの読み込みが含まれます。(#28655

バグ修正

  • 読み取るバイト数よりも多くのコアがある場合、Java SDKのBigtableIO.BigtableSourceで「必要なバンドルサイズ0バイトは0より大きくする必要があります」を修正しました。(Java)#28793
  • RunInferenceの`watch_file_pattern`引数は、2.52.0より前は効果がありませんでした。2.52.0より前の引数`watch_file_pattern`の動作を使用するには、https://beam.dokyumento.jp/documentation/ml/side-input-updates/のドキュメントに従い、`WatchFilePattern`PTransformをSideInputとして使用してください。(#28948
  • `MLTransform`は、最小値、最大値、分位数などのアーティファクトを出力しません。代わりに、`MLTransform`はこれらのアーティファクトを人間が読める形式で出力する機能を追加します - #29017。現時点では、以前の`MLTransform`によって生成された最小値や最大値などのアーティファクトを使用するには、以前の`MLTransform`で生成されたアーティファクトを読み取る`MLTransform`の`read_artifact_location`を使用してください。(#29016
  • 一部の長時間実行中のPythonパイプラインに影響を与えていたメモリリークを修正しました:#28246

セキュリティ修正

既知の問題

  • MLTransformは出力PCollectionで同一の要素を削除します。重複した要素については、1つの要素がダウンストリームに送信されます。(#29600)。
  • 2.52.0〜2.54.0 SDKを使用して、マテリアライズされた大きなサイド入力を使用するPythonパイプラインの一部は、パフォーマンスの低下に影響を受ける可能性があります。これらのSDKバージョンで以前の動作を復元するには、`--max_cache_memory_usage_mb=0`パイプラインオプションを指定してください。(Python)(#30360)。
  • インターネットアクセスがない環境でPythonパイプラインを起動し、`--setup_file`パイプラインオプションを使用するユーザーは、パイプラインの提出時間が長くなる可能性があります。これは2.56.0で修正されました。(#31070
  • `SnappyCoder`を使用する変換は、一部のランナーで同じ変換の以前のバージョンとの互換性がありません。これには、PubSubIOの読み込みが含まれます。(#28655

貢献者一覧

git shortlogによると、以下の人々が2.52.0リリースに貢献しました。すべての貢献者に感謝します!

Ahmed Abualsaud

Ahmet Altay

Aleksandr Dudko

Alexey Romanenko

Anand Inguva

Andrei Gurau

Andrey Devyatkin

BjornPrime

Bruno Volpato

Bulat

Chamikara Jayalath

Damon

Danny McCormick

Devansh Modi

Dominik Dębowczyk

Ferran Fernández Garrido

Hai Joey Tran

Israel Herraiz

Jack McCluskey

Jan Lukavský

JayajP

Jeff Kinard

Jeffrey Kinard

Jiangjie Qin

Jing

Joar Wandborg

Johanna Öjeling

Julien Tournay

Kanishk Karanawat

Kenneth Knowles

Kerry Donny-Clark

Luís Bianchin

Minbo Bae

Pranav Bhandari

Rebecca Szper

Reuven Lax

Ritesh Ghorse

Robert Bradshaw

Robert Burke

RyuSA

Shunping Huang

Steven van Rossum

Svetak Sundhar

Tony Tang

Vitaly Terentyev

Vivek Sumanth

Vlado Djerek

Yi Hu

aku019

brucearctor

caneff

damccorm

ddebowczyk92

dependabot[bot]

dpcollins-google

edman124

gabry.wu

illoise

johnjcasey

jonathan-lemos

kennknowles

liferoad

magicgoody

martin trieu

nancyxu123

pablo rodriguez defino

tvalentyn