關於 Spark 與 DataFusion 、Comet 的 30 天探索之旅,深究為什麼這樣設計。本系列將潛入一條 SQL 查詢的最深處,展開五層架構的縱剖面探險:從最底層的硬體指令(SIMD)與記憶體佈局出發,一路向上拆解儲存格式(Parquet)、DataFusion 查詢引擎、Iceberg 表格式,最後回到 Spark 與 Rust 的跨界整合,徹底看懂現代大數據引擎如何榨乾硬體效能。
嗨嗨~大家我是愛搞怪的 YC一個從小被老師嫌文筆差的人,要來挑戰寫 30 天的技術文章,這件事本身就已經很問號了。 總之這個系列要撬開 Spark、DataFu...
vectorized execution 比較快或許大概聽過幾百次,用 SIMD 加速可能也聽過一百次但...真的是同一件事嗎? 昨天結尾把問題丟在「NULL...
昨天講 vectorized execution「一次處理一批」。今天問一個看起來很問號,但其實藏很深的問題:batch是多少? 一個開源的列式關聯資料庫管理系...
昨天講完一批多大、一批什麼形狀,結尾丟了一個反骨設計:DataFusion 從頭到尾吃 Arrow 欄式,排序時卻偷偷轉列式。欄式適合「同一欄、一次一批」;排序...
D4 講排序時從欄式轉成列式,今天比的是兩套執行模型:向量化執行(DataFusion、Comet),對上 Spark 的 whole-stage codege...
經過前五天理論的洗禮,今天來做點實驗~~~~規格沒寫編譯器怎麼想,只能編譯成組合語言,看它輸出什麼指令啦 實驗環境與設備 晶片 Apple M5 SIMD:...
今天原本想說來做個實驗,但需要先來介紹個 DataFusion因為明天要來測量 SortExec,那今天先把工具介紹一下 SQL 是宣告式 提到 Databas...
嗨嗨~昨天結尾把 EXPLAIN 印出來,plan 最上層那塊 SortExec 還沒沒動,而今天要來看看這塊啦! 問題直白:同一份資料、同一句 ORDER B...
昨天 D08 的 EXPLAIN ANALYZE 印出一條有點違反直覺的線: row_groups_pruned_statistics=5 total → 5...
昨天把一份 98 MB 的 Parquet 剖開,檔案最後有一塊 metadata 叫 footer,記了每一段 row group(水平切開的一組列)裡每欄的...