Repository navigation
Conversation
|
Thanks for opening a pull request! This pull request has been automatically converted to a draft because its title doesn't match Arrow's required format. If this is not a minor PR, could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project. Then could you also rename the pull request title in the following format? or After updating the title, you can mark the pull request as ready for review. See also: |
|
Hey @wgtmac, thanks for working on optimized read paths for fixed-length lists! I've tasked @MashrafeeAryan with the same goal and he already has a write path PR up: #55251 (though I'm not sure he's ready for review yet, Mashrafee?). |
|
Thanks @rok for the heads-up! I happened to have access to OpenAI Astra these days so I just let it explore optimization opportunities alone. Although it has proved some positive findings, I don't have enough time to continue in the near future. Feel free to take it over @MashrafeeAryan. |
|
Thanks @wgtmac ! :) |
Rationale for this change
Parquet LIST columns that are effectively fixed-length, such as vector embeddings, pay the full Dremel definition/repetition-level reconstruction cost on read. This patch adds a page-level fast path that detects fixed-length LIST pages and reads their child values directly.
What changes are included in this PR?
ArrowReaderProperties::set_fixed_list_fast_path(bool), disabled by default.parquet_vector_reader_optimization.md.Are these changes tested?
make -C cpp/build-release -j8 parquetmake -C cpp/build-release -j8 parquet_sharedmake -C cpp/build-release -j8 parquet-benchmarksusing Conan's localbenchmark/1.9.4packageclang-format --dry-run --Werrorpasses for modified C++ filesThe previous macOS Intel CI run also reported
arrow-s3fs-testandarrow-s3fs-module-testtimeouts; these are unrelated S3 test timeouts rather than failures in the modified Parquet targets.Are there any user-facing changes?
Yes. Applications can opt into the fixed-length LIST fast path with
ArrowReaderProperties::set_fixed_list_fast_path(true). It remains disabled by default. If enabled for a variable-width LIST and a later page changes width after values have been consumed, the reader returns an explicit error instructing callers to disable the property.Was AI used for this PR?
Yes. AI was used to research the Hardwood fixed-length LIST design, implement the reader fast path and benchmarks, investigate CI failures, and analyze benchmark output. The code and PR description were reviewed in the local workspace before submission.
PR code and description written by:
Reviewed before submission by: