ブログ & リリース
2023/11/17
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。
セキュリティ修正
- CVE-2023-39325を修正しました(Java/Python/Go)(#29118)。
- CVE-2023-47248を軽減しました(Python)#29392。
既知の問題
- 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