Apache Beam 2.52.0

我們很高興推出 Beam 的新版本 2.52.0。此版本包含改進和新功能。請參閱下載頁面以取得此版本。

有關 2.52.0 版本變更的更多資訊,請查看詳細發佈說明

重點

  • 先前已棄用的、依賴 Avro 的程式碼 (Beam 2.46.0 版本) 已從 Java SDK 的「核心」套件中完全移除。請改用 beam-sdks-java-extensions-avro。這將允許在使用者程式碼中輕鬆更新 Avro 版本,而不會在 Beam「核心」中產生潛在的重大變更,因為 Beam Avro 擴充功能已支援最新的 Avro 版本,並應處理此問題。(#25252)。
  • 發佈 Java 21 SDK 容器映像檔現在已支援作為 Apache Beam 發佈過程的一部分。(#28120)
    • Direct Runner 和 Dataflow Runner 支援在 Java21 上執行管道 (在測試完全設定之前為實驗性)。對於其他執行器 (Flink、Spark、Samza 等),支援狀態取決於執行器專案。

新功能/改進

  • UseDataStreamForBatch 管道選項新增至 Flink 執行器。當它設定為 true 時,Flink 執行器將使用 DataStream API 執行批次作業。預設情況下,該選項設定為 false,因此批次作業仍使用 DataSet API 執行。
  • 當圖形大於 10MB 時,Java SDK 不再需要 upload_graph 作為 DataflowRunner 的實驗選項之一 (PR#28621)。
  • 狀態和側輸入快取已啟用,預設值為 100 MB。使用 --max_cache_memory_usage_mb=X 為使用者狀態 API 和側輸入提供快取大小。(Python) (#28770)。
  • Beam YAML 穩定版本。現在可以使用 YAML 撰寫 Beam 管道,並利用 Beam YAML 框架,其中包括一組初步的 IO 和現成轉換。更多資訊可以在 YAML 根資料夾和 README 中找到。

重大變更

  • 由於所有依賴 Avro 的類別最終都移至 extensions/avro,因此 org.apache.beam.sdk.io.CountingSource.CounterMark 使用自訂 CounterMarkCoder 作為預設編碼器。如果仍然需要為 CounterMark 使用 AvroCoder,那麼,作為一種變通方法,應將「舊」CountingSource 類別的副本放置在專案程式碼中並直接使用 (#25252)。
  • FirestoreOptions 中將 host 重新命名為 firestoreHost,以避免潛在的命令列引數衝突 (Java) (#29201)。
  • 使用 SnappyCoder 的轉換與先前版本的相同轉換 (Java) 在某些執行器上不相容。這包括 PubSubIO 的讀取 (#28655)。

錯誤修正

  • 修正在 Java SDK 的 BigtableIO.BigtableSource 中,當您擁有的核心數多於要讀取的位元組數時,「要求的捆綁包大小 0 個位元組必須大於 0」的問題 (Java) #28793
  • RunInferencewatch_file_pattern 引數在 2.52.0 之前沒有作用。若要使用 2.52.0 之前的引數 watch_file_pattern 的行為,請遵循 https://beam.dev.org.tw/documentation/ml/side-input-updates/ 上的文件,並使用 WatchFilePattern PTransform 作為 SideInput。(#28948)
  • MLTransform 不會輸出最小值、最大值和分位數等成品。相反地,MLTransform 將新增一項功能,以人類可讀的格式輸出這些成品 - #29017。目前,若要使用先前 MLTransform 產生的最小值和最大值等成品,請使用 MLTransformread_artifact_location,其會讀取先前在不同的 MLTransform 中產生的成品 (#29016)
  • 修正影響某些長時間執行的 Python 管道的記憶體洩漏問題:#28246

安全性修正

已知問題

  • MLTransform 會捨棄輸出 PCollection 中的相同元素。對於任何重複元素,將向下游發出單一元素。(#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 的轉換與先前版本的相同轉換 (Java) 在某些執行器上不相容。這包括 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