關於 Spark 與 DataFusion 、Comet 的 30 天探索之旅,深究為什麼這樣設計。本系列將潛入一條 SQL 查詢的最深處,展開五層架構的縱剖面探險:從最底層的硬體指令(SIMD)與記憶體佈局出發,一路向上拆解儲存格式(Parquet)、DataFusion 查詢引擎、Iceberg 表格式,最後回到 Spark 與 Rust 的跨界整合,徹底看懂現代大數據引擎如何榨乾硬體效能。
相信很多人在了解 Comet 後,可能會思考一個問題,Comet 夾在 Spark 與 datafusion 中間,如果遇到datafusion不支援的運算怎麼...
昨天講單一表達式的三條路,其中 dispatcher 是為了避免「一個表達式沒 native、整個 Project 白白 fallback」。今天上一層到 op...
昨天 D22 講的是 Comet 決定不接手某個 operator 時的診斷子系統,理由怎麼被記錄下來,今天講另一半:Comet 決定接手之後,這個 opera...
D21 講了 Comet 表達式的三條路,第三條 dispatcher 是 opt-in 的補救,今天介紹兩件 D21 沒展開的事: Dispatcher 自...
D24 講 dispatcher 的 canHandle 有一條:輸出型別要通過 isSupportedDataType,而這個集合的邊界就是「Arrow FF...
D25 講清楚了資料怎麼過界:Arrow C Data Interface 定義結構體佈局,release callback 定義所有權。今天講一個更麻煩的東西...
D21 講過單一表達式有三條路,第三條就是 codegen dispatch。今天不重講原理,講最近 comet 在做的事:把表達式一個一個從 fallback...
Rust 算完之後,為什麼還要把 Arrow batch 轉回 Spark 認的列式?這件事叫 C2R(columnar-to-row),是所有 native...
D11 講過 pipeline-breaking:有些運算子必須把上游全部收完才能吐第一筆。Shuffle 是這件事的極端形式,因為它要收完的東西不只要物化,還...
這個系列的標題是一道算式,今天來驗算一下。 三個 1 Spark 這個 1,價值不是執行引擎,是 Catalyst。十年份的優化規則、統計、AQE,加上整個生態...