[VL] Add lazy per-column deserialization for Columnar Table Cache#12211
[VL] Add lazy per-column deserialization for Columnar Table Cache#12211jackylee-ch wants to merge 1 commit into
Conversation
|
Run Gluten Clickhouse CI on x86 |
58bd451 to
d5a0502
Compare
|
Run Gluten Clickhouse CI on x86 |
d5a0502 to
8e374db
Compare
|
Run Gluten Clickhouse CI on x86 |
8e374db to
0f0ccd2
Compare
|
Run Gluten Clickhouse CI on x86 |
0f0ccd2 to
8b09d6b
Compare
|
Run Gluten Clickhouse CI on x86 |
|
@yaooqinn PTAL |
|
Thanks @jackylee-ch, V3 layout is a sensible extension of the cache-stats wire we landed in #12092 / #12196. Several things to discuss before this lands: 1. Benchmark needs to be re-run. The checked-in 2. Do we really need a new SQLConf? V3 functionally supersedes V2 (V3 frames also carry 3. Cross-language test parity vs #12196. V3 has no cpp-side byte-equal golden test; JVM-side tests synthesize their own frames via 4. Smaller items.
Happy to file any of these as separate issues if it helps. |
8b09d6b to
09679ee
Compare
|
Run Gluten Clickhouse CI on x86 |
09679ee to
ab9e0f7
Compare
|
Run Gluten Clickhouse CI on x86 |
ab9e0f7 to
144e816
Compare
b77f4ab to
9a0f96a
Compare
9a0f96a to
b5b1906
Compare
2fad6fb to
2b96545
Compare
Write V3 per-column cache bytes by default for Velox table cache. Partition stats now only controls the optional stats/pruning payload: stats off writes a no-stats V3 frame, stats on writes V3 with stats, and older native libraries still fall back to V2 stats or legacy bytes. Add the V3 no-stats JNI/native serializer, JVM parsing for statsLen=0, cross-language golden coverage, and GitHub Actions benchmark execution without committing local benchmark results. Change-Id: I2a8582f901fafd436cac1a1d16e0367e9330b336
2b96545 to
c3cc1bd
Compare
|
Run Gluten Clickhouse CI on x86 |
What changes
This PR makes Velox table cache write V3 per-column framed bytes by default. Lazy materialization is a base table-cache capability;
spark.gluten.sql.columnar.tableCache.partitionStats.enablednow only controls the optional stats/pruning payload.spark.gluten.sql.columnar.tableCache.lazy.deserialization.enabled.statsLen=0) for the default lazy path.Performance
No local benchmark result is quoted in this PR. Results below are from GitHub Actions.
Velox Backend (x86), run26822472145.table-cache-lazy-deserialization-benchmark.ColumnarTableCacheLazyDeserBenchmark.5Mrows,32partitions,3iterations.03:08 min.How was this patch tested?
./dev/format-scala-code.shPATH="/opt/homebrew/opt/llvm@15/bin:$PATH" ./dev/format-cpp-code.shgit diff --checkruby -e 'require "yaml"; YAML.load_file(".github/workflows/velox_backend_x86.yml"); puts "yaml ok"'env CCACHE_DIR=/private/tmp/gluten-ccache cmake --build cpp/build --target libgluten.dylib velox_operators_test -j 8env DYLD_LIBRARY_PATH=cpp/build/releases:/Users/lijunqing/Code/stczwd/gluten/ep/build-velox/build/velox_ep/deps-install/lib:/opt/homebrew/lib cpp/build/velox/tests/velox_operators_test --gtest_filter=VeloxColumnarBatchSerializerTest.framedSerializeWithStatsV3EmptyGolden:VeloxColumnarBatchSerializerTest.framedSerializeV3NoStatsEmptyGoldenenv DYLD_LIBRARY_PATH=cpp/build/releases:/Users/lijunqing/Code/stczwd/gluten/ep/build-velox/build/velox_ep/deps-install/lib:/opt/homebrew/lib ./build/mvn test-compile scalatest:test -pl backends-velox -Pbackends-velox -Pspark-3.5 -Pscala-2.12 -DwildcardSuites=org.apache.spark.sql.execution.ColumnarCachedBatchFramedBytesSuite,org.apache.spark.sql.execution.ColumnarCachedBatchLazySerdeTest -DfailIfNoTests=falseColumnarTableCacheLazyDeserBenchmarkwith10000rows,4partitions,1iteration, phasesread1,readAll,filter.Was this patch authored or co-authored using generative AI tooling?
Generated-by: Codex GPT-5