iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

1+1+1>3 ~ Spark 與 DataFusion、Comet 效能煉金術 ~ 系列

關於 Spark 與 DataFusion 、Comet 的 30 天探索之旅,深究為什麼這樣設計。本系列將潛入一條 SQL 查詢的最深處,展開五層架構的縱剖面探險:從最底層的硬體指令(SIMD)與記憶體佈局出發,一路向上拆解儲存格式(Parquet)、DataFusion 查詢引擎、Iceberg 表格式,最後回到 Spark 與 Rust 的跨界整合,徹底看懂現代大數據引擎如何榨乾硬體效能。

參賽天數 21 天 | 共 21 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文 團隊源來適愛開緣
DAY 11

Day 11 Parquet 晚物化(Late Materialization):先 WHERE 再解碼

嗨嗨~昨天 D10 走完 Iceberg 那條漏斗,catalog、metadata、manifest list、manifest 到 data file,一張...

2026-08-27 ‧ 由 rosa_lai 分享
DAY 12

Day 12 Iceberg 怎麼刪一列:從 delete file 到 deletion vector

昨天 D11 介紹完晚物化,WHERE g = 5 拿到一張「這幾列符合條件」的位圖,還沒真的把 payload 解出去。那輸出前還要跟 delete 交集嗎?...

2026-08-28 ‧ 由 rosa_lai 分享
DAY 13

Day 13 DataFusion 可嵌入查詢引擎:為什麼還要再做一個

快到鐵人賽挑戰的一半了,我們從 D9 到 D12 走完儲存這一層,Parquet 內部剖了、了解了 Iceberg 四層漏斗、晚物化位圖跟 delete 交集也...

2026-08-29 ‧ 由 rosa_lai 分享
DAY 14

Day 14 Morsel-Driven Parallelism:DataFusion 多核並行與 work-stealing

昨天 D13 講為什麼要有可嵌入引擎,答案是 DataFusion 要成為能被 Spark、Ballista、新創的分析服務通用套用的執行引擎。可是講完架構動機...

2026-08-30 ‧ 由 rosa_lai 分享
DAY 15

Day 15 Apache DataFusion Comet 是什麼?

不知不覺鐵人賽走到過半了,標題那句「1+1+1>3 ~ Spark 與 DataFusion、Comet 效能煉金術 ~」裡的第三個 1,那顆叫 Come...

2026-08-31 ‧ 由 rosa_lai 分享
DAY 16

Day 16 DataFusion 執行模型:Volcano Pull、RecordBatch 與 Tokio Async

D14 讀完 morsel-driven 論文,知道一句 SQL 丟進多核機器時,並行執行的骨架該長什麼樣:morsel 派工、work-stealing、pi...

2026-09-01 ‧ 由 rosa_lai 分享
DAY 17

Day 17 MemoryPool:兩種公平

D16 講完資料怎麼在 DataFusion 內部流:拉、一批一批、跑在 tokio 上,pipeline breaker 是 async 的等待點。今天緊接著...

2026-09-02 ‧ 由 rosa_lai 分享
DAY 18

Day 18 Join 演算法:planner 憑什麼選

D16 講過 DataFusion 怎麼執行(拉式、batch、tokio)、D17 講記憶體資源的協調。今天要討論是什麼東西這麼關鍵,幾乎決定整條 SQL 查...

2026-09-03 ‧ 由 rosa_lai 分享
DAY 19

Day 19 SortExec 記憶體不夠時怎麼寫磁碟:排序、Pushdown與 Top-K

D18 把 join 演算法選擇拆開來看,最後提一句 Sort、hash 都有 spill 路徑 ,但 spill 到底怎麼運作?今天把三件事湊在一起說:...

2026-09-04 ‧ 由 rosa_lai 分享
DAY 20

Day 20 Iceberg 怎麼接上引擎:TableProvider、FileScanTask

D19 最後提到 pushdown 能不能生效,要回到 TableProvider 來看,今天就來說明這一段,順便看 Iceberg 表格式版本的演進。 今天回...

2026-09-05 ‧ 由 rosa_lai 分享