AGENTIC COMMONSAI 產業簡報

繁中EN

主題AI 編程與開發工具出版

返回文章列表

Apache Spark 4.3:狀態串流壓進 150 ms

本頁內容6 個段落
  1. 有狀態串流的機制:shuffle 從阻擋變成流水線
  2. 三個數字,以及它們的限制
  3. Project Feather:小資料迭代提速,但需要手動開
  4. SCD Type 2 Auto CDC:歷史留痕不再靠手寫 merge
  5. 接下來該查什麼
  6. 參考來源

摘要: Databricks 於 2026 年 11 月 5 日發布 Apache Spark 4.3,隨 Databricks Runtime 19 推出。這版把串流聚合、去重與自訂有狀態處理帶進 Real-Time Mode,三個代表性 benchmark 的 P99 端到端延遲都低於 150 ms,同時加入季度發布節奏。對開發者來說,重點不是「又快了一點」,而是低延遲串流可能不再需要另外維護一套引擎。

有狀態串流的機制:shuffle 從阻擋變成流水線

先前 Real-Time Mode 只適合無狀態的處理;要記住跨事件的脈絡——詐欺偵測要看前幾筆交易、裝置監控要持續更新計數——就得換工具。Spark 4.3 把 streaming aggregation、dropDuplicates,以及 Scala/Java 的 transformWithState(SPARK-58635、SPARK-57228)加進 Real-Time Mode,而且沿用 Structured Streaming 既有 API、state store 與 checkpointing,不是另起一套程式模型。

能這樣做,靠的是執行模型的改動。傳統 blocking shuffle 必須等上游 stage 完全產出資料,下游才能開始;對長時間運行的串流任務來說,這種「階段式」節奏撐不住連續資料流。Spark 4.3 新增 PipelinedShuffleDependency(SPARK-58185),讓生產與消費 stage 同時運行,由 StreamingShuffleManager(SPARK-57141)把紀錄增量地送往下游負責該 key 的任務。由這種依賴連接的 stage 會被排程器視為一個 pipelined group:一起排程、一起失敗(SPARK-58263、SPARK-58398)。

三個數字,以及它們的限制

Databricks 在 SPARK-58884 回報的三個有狀態 workload,P99 端到端延遲分別是:dropDuplicates 136 ms、Window aggregation 139 ms、transformWithState 141 ms。公告原話是,對受支援的 workload 來說,達到毫秒級延遲不再需要另一套串流引擎。

但原文也寫明,這是三個受測 workload 的量測結果,不是對每一條 pipeline 的延遲保證。還有兩個工程上的取捨值得注意:pipelined group 內任何一個 stage 失敗,整組都會失敗;而且因為整組並行運行,Spark 只在任務槽位足夠容納全部任務時才准入這組,否則快速失敗而不是卡住。把這個模型放進生產前,資源規劃和失敗半徑要先算清楚。

Project Feather:小資料迭代提速,但需要手動開

LLM 輔助開發的迴圈常常是:生一小段轉換、跑在樣本上、看結果、再改。每次迭代可能只處理幾列資料,任務排程和 shuffle 的固定開銷卻比計算本身還貴。Project Feather 針對的就是這筆開銷:對符合條件的小型單一 partition 查詢片段,走免 shuffle 的單任務執行(SPARK-57851),讓實體計畫可以省掉 Exchange。預設資格限制下,合格的檔案掃描是一個放得進單一 partition 的非空小檔案,合格的 local in-memory relation 則最多 1,000 列;支援的查詢形狀包括掃描、聚合、distinct、window、排序與 limit。

另外還有選用的 Arrow 原生 Dataset 快取(SPARK-57268),把快取批次以 Arrow 格式儲存並附壓縮與欄位統計。啟用方式是啟動新的 Spark 應用時設定靜態組態 spark.sql.cache.serializer=org.apache.spark.sql.execution.columnar.ArrowCachedBatchSerializer——注意是靜態組態,得在應用啟動時就決定。更廣的 in-process local repartitioning 被排到下一版(SPARK-57399),這版拿不到。

SCD Type 2 Auto CDC:歷史留痕不再靠手寫 merge

只有現況表,回答不了「下單當時這位客戶屬於哪個區域」。Spark 4.3 替 Auto CDC 加上端到端的 SCD Type 2 支援(SPARK-56249),透過 Python、SQL 與 Spark Connect 都能用(SPARK-58321、SPARK-58247、SPARK-58261),自動套用變更而不必手寫 merge。輸出表裡每個唯一 key 會對應一串紀錄,用 __START_AT 和 __END_AT 兩個中繼資料欄標記各自的有效期間;原文舉的例子是客戶從 West 區搬到 East 區時,舊紀錄保留並以變更事件的時間作為結束點,再插入一筆新紀錄。

要誠實說明一件事:這次收集到的原文在這個例子中段被截斷,SCD Type 2 之後的內容、以及發布公告更後面的章節,這份素材並不完整,因此無法對那些部分下任何結論。

接下來該查什麼

Spark 4.3 也開始了季度功能發布節奏,從每六個月一次改成每三個月一次,完成的功能會更快落到使用者手上。這個節奏本身值得納入團隊的升級規劃。

Databricks 近期的動作不只這一件——這家公司先前的融資動態(見本站先前關於 Databricks 再融資、估值升至 1,880 億美元的分析)顯示它在資料與 AI 平台上持續加碼,開源 Spark 引擎正是其中的地基。按這份工程團隊的發布公告,由 Jungtaek Lim、Wenchen Fan、Reynold Xin 等人署名,下一步實際的驗證路徑是:拿你自己的有狀態 workload 在 Runtime 19 上重跑,對照那 136–141 ms 是否在你的資料形狀下成立;再確認 pipelined group 的任務槽位需求在你的叢集上不會造成快速失敗。原文沒有提供這三個 benchmark 之外的生產環境實測數據,這部分只能自己驗。

參考來源

原始貼文
AGENTIC COMMONS由 PHLEGON LABS 經營
分享X電郵
支持我們

相關閱讀

  1. 把資料庫呼叫藏起來之後:OpenAI 的 Habitat 如何撐住每秒 7,000 萬次請求

    OpenAI 揭露 Habitat 從 Python 函式庫長成獨立服務的取捨:用技術債換開發速度,代價是尾延遲。

    OpenAI

  2. Ruff 0.16:預設規則從59條拉到413條

    Ruff v0.16.0 於 2026 年 7 月 23 日發布:預設啟用規則從 59 條增至 413 條,新增 Markdown 內 Python 程式碼格式化與 ruff: ignore 抑制語法,並有 18 條意見型規則退出預設集。本文整理版本重點與升級注意事項。

    Python

  3. TensorZero 收攤:730 萬美元種子輪的開源 LLM 閘道一夜封存

    6 月 13 日,開源 Rust LLM 閘道 TensorZero 的 GitHub repo 無預警轉為封存。共同創辦人證實公司收攤:兩年半僅花用不到一半的 730 萬美元種子輪資金,剩餘資本退還投資人,程式碼以 Apache 2.0 保留但不再維護。

    Open Source