apache / apache/parquet-java

Bulk skip in RunLengthBitPackingHybridDecoder / DictionaryValuesReader

Đang mở
#3,772 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Type: enhancement
Ngôn ngữ chính
Java
Star
3.1k
Fork
1.6k
Merge trung bình
3 ngày 12 giờ
Pull request đã merge (30 ngày)
33

Mô tả

### Motivation

Make Hive leverage bulk skip when implementing probe decode for Parquet, similarly to https://issues.apache.org/jira/browse/HIVE-22731, which was about ORC.

### Problem

`ValuesReader.skip(int n)` ships with a naive default:

```java
public void skip(int n) {
for (int i = 0; i < n; i++) skip();
}
```

For dictionary-encoded columns (the common case), each `skip()` bottoms
out in `RunLengthBitPackingHybridDecoder.readInt()` — a mode switch,
array-index arithmetic, and a value the caller immediately discards.

Any filter-then-skip path (column-index row ranges, hash-join probe
filtering, runtime filters) pays this cost per skipped row.

### Proposal

1. Add `RunLengthBitPackingHybridDecoder.skipInts(int n)` — re-use
`readNext()` per run, then advance `currentCount` by
`min(n, currentCount)` instead of walking every value through
`readInt()`.
2. Override `skip(int)` on `DictionaryValuesReader` and
`RunLengthBitPackingHybridValuesReader` to call `decoder.skipInts(n)`.

### Component(s)

Core

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách đọc RunLengthBitPackingHybridDecoder.readInt() và readNext(), sau đó kiểm tra skip(int) trong DictionaryValuesReader và RunLengthBitPackingHybridValuesReader. Xác nhận cách các giá trị được mã hóa bằng từ điển được giải mã và xác định các kiểm thử hiện có liên quan hoặc các điểm vào kiểm thử. Hoàn thành khi việc bỏ qua hàng loạt sử dụng đường dẫn của decoder trong cả ba reader mà vẫn giữ nguyên số lượng giá trị bị bỏ qua.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
data
Loại issue
Tính năng
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
72/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.