08 — Package Archaeology
DBR fork Spark sâu tới mức nào, classpath/jar/module cho thấy runtime boundary ra sao.
Câu hỏi
Databricks Runtime là Spark OSS cộng vài plugin, hay là một fork/runtime bundle sâu hơn nhiều?
Vì sao câu này quan trọng
Nếu DBR chỉ là plugin rời thì có thể hiểu bằng cách học Spark extension points. Nhưng nếu org.apache.spark.* và com.databricks.* nằm chung trong core jar, và security/catalog/storage/telemetry đều chạm vào analyzer/runtime/filesystem, thì phải đọc nó như một managed runtime fork.
Breakdown
- Jar nào chứa Spark core/sql/catalyst/fork classes?
com.databricks.*nằm trong jar nào cùng vớiorg.apache.spark.*?- Class nào chỉ có ở DBR so với upstream Spark 4.0.0?
- Package nào correspond với monorepo module nào?
driver/preload_class.lstcho biết runtime preload surface nào?- Classpath/shadow jar thay behavior gốc ở đâu?
Evidence trong snapshot
/Users/chimeyrock/ChimeyRock/databricks/reverse/docs/04-jars-va-monorepo.md/Users/chimeyrock/ChimeyRock/databricks/reverse/docs/06-4-phat-hien-quan-trong.md/Users/chimeyrock/ChimeyRock/databricks/reverse/docs/09-huong-dan-decompile.mddriver/preload_class.lstjars/*.jarhadoop-safety-jars/*.jar- class→jar SQLite index nếu build theo roadmap
Câu trả lời tạm thời
Snapshot gợi ý DBR không có ranh giới sạch giữa OSS Spark và proprietary plugin. Databricks embed nhiều class và behavior vào chính Spark/SQL/runtime jars, cộng thêm classpath shadowing và dynamic config. Vì vậy nên đọc DBR như một runtime bundle/fork có nhiều control boundary, không phải chỉ là Spark + extension jar.
Còn thiếu / cần verify
- Cần chạy class-set diff với upstream Spark 4.0.0.
- Cần module map package → jar → monorepo target để tránh đoán từ tên package.