部落格與發佈
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
。這將允許在使用者程式碼中輕鬆更新 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。
- RunInference 的
watch_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
產生的最小值和最大值等成品,請使用MLTransform
的read_artifact_location
,其會讀取先前在不同的MLTransform
中產生的成品 (#29016)- 修正影響某些長時間執行的 Python 管道的記憶體洩漏問題:#28246。
安全性修正
- 修正 CVE-2023-39325 (Java/Python/Go) (#29118)。
- 緩解 CVE-2023-47248 (Python) #29392。
已知問題
- 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