ColumnChunkPageWriter uses only heap memory.
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.6k
- 平均マージ
- 3日 12時間
- マージ済み PR(30日)
- 33
説明
After PARQUET-160 was resolved, ColumnChunkPageWriter started using ConcatenatingByteArrayCollector. There are all data is collected in the List of byte[], before writing the page. No way to use direct memory for allocating buffers. ByteBufferAllocator is present in the [ColumnChunkPageWriter](https://github.com/apache/parquet-mr/blob/master/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnChunkPageWriteStore.java#L73) class, but never used.
Using of java heap space in some cases can cause OOM exceptions or GC's overhead.
ByteBufferAllocator should be used in the ConcatenatingByteArrayCollector or OutputStream classes.
**Reporter**: [Vitalii Diravka](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=vitalii) / @vdiravka
**Assignee**: [Vitalii Diravka](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=vitalii) / @vdiravka
#### Related issues:
- [Error: SYSTEM ERROR: RuntimeException: Unknown logical type ](https://issues.apache.org/jira/browse/DRILL-7825) (Is contained by)
- [Replace ParquetColumnChunkPageWriter with original Parquet class](https://issues.apache.org/jira/browse/DRILL-7906) (Is contained by)
- [Out of heap running CTAS against text delimited](https://issues.apache.org/jira/browse/DRILL-5544) (relates to)
- [Support configurable for DirectByteBufferAllocator from Hadoop Configuration](https://github.com/apache/parquet-java/issues/2443) (is related to)
- [Improvements in ByteBuffer read path](https://github.com/apache/parquet-java/issues/1534) (is related to)
- [Simplify CapacityByteArrayOutputStream](https://github.com/apache/parquet-java/issues/1712) (is related to)
**Note**: *This issue was originally created as [PARQUET-1006](https://issues.apache.org/jira/browse/PARQUET-1006). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnChunkPageWriteStore.java から始め、ColumnChunkPageWriter が自身の ByteBufferAllocator を ConcatenatingByteArrayCollector または該当する OutputStream に渡す方法を追跡します。書き込み前にページデータがどこで蓄積されるかを確認し、完全な経路で、ヒープのバイト配列だけを使用するのではなく、提供された allocator を通じて確保されるかどうかを判断します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- data-engineering
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 42/100