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 1

Day 01 SQL Query 是這樣也不是這樣

嗨嗨~大家我是愛搞怪的 YC一個從小被老師嫌文筆差的人,要來挑戰寫 30 天的技術文章,這件事本身就已經很問號了。 總之這個系列要撬開 Spark、DataFu...

2026-08-17 ‧ 由 rosa_lai 分享
DAY 2

Day 02 向量化執行跟 SIMD,是同一件事嗎?

vectorized execution 比較快或許大概聽過幾百次,用 SIMD 加速可能也聽過一百次但...真的是同一件事嗎? 昨天結尾把問題丟在「NULL...

2026-08-18 ‧ 由 rosa_lai 分享
DAY 3

Day 03 batch size 為什麼是 8192 rows?

昨天講 vectorized execution「一次處理一批」。今天問一個看起來很問號,但其實藏很深的問題:batch是多少? 一個開源的列式關聯資料庫管理系...

2026-08-19 ‧ 由 rosa_lai 分享
DAY 4

Day 04 DataFusion 是欄式引擎,為什麼排序時要轉成列式?

昨天講完一批多大、一批什麼形狀,結尾丟了一個反骨設計:DataFusion 從頭到尾吃 Arrow 欄式,排序時卻偷偷轉列式。欄式適合「同一欄、一次一批」;排序...

2026-08-20 ‧ 由 rosa_lai 分享
DAY 5

Day 05 向量化 codegen 哪時候比較划算?

D4 講排序時從欄式轉成列式,今天比的是兩套執行模型:向量化執行(DataFusion、Comet),對上 Spark 的 whole-stage codege...

2026-08-21 ‧ 由 rosa_lai 分享
DAY 6

Day 06 效能底層煉金:從 Clang 組合語言拆解 Arrow 記憶體與向量化

經過前五天理論的洗禮,今天來做點實驗~~~~規格沒寫編譯器怎麼想,只能編譯成組合語言,看它輸出什麼指令啦 實驗環境與設備 晶片 Apple M5 SIMD:...

2026-08-22 ‧ 由 rosa_lai 分享
DAY 7

Day 07 DataFusion 是函式庫,datafusion-cli 是外殼

今天原本想說來做個實驗,但需要先來介紹個 DataFusion因為明天要來測量 SortExec,那今天先把工具介紹一下 SQL 是宣告式 提到 Databas...

2026-08-23 ‧ 由 rosa_lai 分享
DAY 8

Day 08 DataFusion SortExec:多欄 ORDER BY 為什麼比單欄貴

嗨嗨~昨天結尾把 EXPLAIN 印出來,plan 最上層那塊 SortExec 還沒沒動,而今天要來看看這塊啦! 問題直白:同一份資料、同一句 ORDER B...

2026-08-24 ‧ 由 rosa_lai 分享
DAY 9

Day 09 Parquet 是什麼、長什麼樣

昨天 D08 的 EXPLAIN ANALYZE 印出一條有點違反直覺的線: row_groups_pruned_statistics=5 total → 5...

2026-08-25 ‧ 由 rosa_lai 分享
DAY 10

Day 10 Iceberg 四層結構:讀一張表要打開幾個檔案

昨天把一份 98 MB 的 Parquet 剖開,檔案最後有一塊 metadata 叫 footer,記了每一段 row group(水平切開的一組列)裡每欄的...

2026-08-26 ‧ 由 rosa_lai 分享