`RequiresFallback.isCompressionSatisfying` is too aggressive with current default page size
Maintainer thường phản hồi trong vòng 2 ngày
@yadavay-amzn đang làm issue này rồi.
Từ ngày 11/5/2026.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- java
- Lĩnh vực
- data-engineering
Hướng nghiên cứu
Bắt đầu tại điểm vào RequiresFallback.isCompressionSatisfying và theo dõi cách các chỉ mục trang, giá trị mặc định 20,000 hàng và dictionary fallback tương tác với nhau. So sánh các kết quả được báo cáo với 20,000 hàng và 128,000 hàng, sau đó xác định liệu thay đổi đã thống nhất là một heuristic lấy mẫu được sửa đổi hay một tùy chọn cấu hình; được xem là hoàn tất khi hành vi này được bao phủ đối với dữ liệu có lực lượng bản ghi ở mức vừa phải.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the enhancement requested
An issue recently was brought up in arrow-rs (https://github.com/apache/arrow-rs/pull/9700) which brought to my attention the existence of isCompressionSatisfying in the RequiresFallback interface. In short, after accumulating a page worth of data, isCompressionSatisfying is called to see if dictionary encoding is actually compressing the data at all, and if not, then the encoder falls back immediately to the fallback encoder. As far as I could determine, this behavior was introduced very early on, before the advent of the page indexes, so IIRC the page size would have been significantly larger. With page indexes, however, this function is now called after only 20000 rows have been processed. A column with a moderate cardinality might not yet have produced enough repeating values to lead this function to conclude it's best to continue using a dictionary.
For example, a dataframe with an int64 column consisting of one million values mod'd with 32768 will end up ditching dictionary encoding completely, and produce a column chunk of 8.4MB. If the page row count is bumped up to 128k, then dictionary encoding is used throughout and the resultant column chunk is only 2.2MB.
Sadly, it does not appear that this behavior is configurable, so short of increasing the page row count, its behavior cannot be modified.
I can see the need for this type of heuristic, but I think it needs to be modified in light of the current defaults resulting in far too few samples with which to determine if dictionary encoding is beneficial or not. If collecting more samples before falling back is not practical, there should at least be a configuration setting to disable this check.
Component(s)
Core
- Ngôn ngữ chính
- Java
- Star
- 3.1k
- Fork
- 1.6k
- Merge trung bình
- 4 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 30
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/parquet-java
-
Row-group copying collides for distinct column paths with the same dot stringCó thể đã có người làm @costas-db đã nhận 7 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
apache/parquet-java#3829 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Binary statistics truncation test ignores its configured truncation lengthCó thể đã có người làm @dhruv-15-03 đã nhận 8 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
apache/parquet-java#3820 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Make PageReader AutoCloseableĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/parquet-java#3767 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Remove duplicate LICENSE and NOTICE files from benchmark JARsCó thể đã có người làm @efegokdemir đã nhận 12 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/parquet-java#3695 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Close input readers when ParquetRewriter setup failsCó thể đã có người làm @anxkhn đã nhận 83 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/parquet-java#3667 ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của apache/parquet-java
Issue tương tự
-
CalendarEventAttendance/get returns eventAttendanceStatus while the doc says attendanceStatusCó thể đã có người làm @chibenwa đã nhận hôm nay. Đang mởbug claude
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
linagora/tmail-backend#2697 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
apache/skywalking#14120 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG] Case-insensitive search suggestions miss items when the JVM default locale is TurkishCó thể đã có người làm @thswlsqls đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] 关于启动游戏进度条显示的优化Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
HMCL-dev/HMCL#6943 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
NameAllocator generates colliding identifiers with ignorable charactersCó thể đã có người làm @PHJ2000 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày