Bulk skip in RunLengthBitPackingHybridDecoder / DictionaryValuesReader
还没有人认领这个 Issue。
评估
调研方向
先阅读 RunLengthBitPackingHybridDecoder.readInt() 和 readNext(),然后检查 DictionaryValuesReader 和 RunLengthBitPackingHybridValuesReader 中的 skip(int)。确认字典编码值的解码方式,并找出相关的现有测试或测试入口点。完成标准是:三个 reader 中的批量跳过都使用 decoder 路径,同时保持跳过的值数量不变。
由索引模型根据 Issue 内容生成。
描述
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:
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
- Add
RunLengthBitPackingHybridDecoder.skipInts(int n)— re-use
readNext()per run, then advancecurrentCountby
min(n, currentCount)instead of walking every value through
readInt(). - Override
skip(int)onDictionaryValuesReaderand
RunLengthBitPackingHybridValuesReaderto calldecoder.skipInts(n).
Component(s)
Core
- 主要语言
- Java
- 星标
- 3.1k
- 派生
- 1.6k
- 平均合并
- 4 天 12 小时
- 30 天内合并 PR
- 28
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/parquet-java 的其他 Issue
-
Type: bug
难度 2/5 1-3 小时 新手友好度 68/100
apache/parquet-java#3792 ·
-
难度 2/5 1-3 小时 新手友好度 82/100
apache/parquet-java#3767 ·
-
难度 2/5 1-3 小时 新手友好度 72/100
apache/parquet-java#3695 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 78/100
apache/parquet-java#3667 ·
-
Type: bug
难度 2/5 1-3 小时 新手友好度 76/100
apache/parquet-java#3587 ·
查看 apache/parquet-java 的全部 Issue
相似的 Issue
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
apache/flink-agents#1152 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 70/100
jenkinsci/blueocean-plugin#5417 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
objectionary/eo-graphs#75 ·