Add merge blocks command to parquet-tools
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.6k
- 平均マージ
- 3日 12時間
- マージ済み PR(30日)
- 33
説明
Current implementation of merge command in parquet-tools doesn't merge row groups, just places one after the other. Add API and command option to be able to merge small blocks into larger ones up to specified size limit.
###### Implementation details:
Blocks are not reordered not to break possible initial predicate pushdown optimizations.
Blocks are not divided to fit upper bound perfectly.
This is an intentional performance optimization.
This gives an opportunity to form new blocks by coping full content of smaller blocks by column, not by row.
###### Examples:
1. Input files with blocks sizes:
```java
[128 | 35], [128 | 40], [120]
```
Expected output file blocks sizes:
`merge `
```java
[128 | 35 | 128 | 40 | 120]
```
`merge -b`
```java
[128 | 35 | 128 | 40 | 120]
```
`merge -b -l 256 `
```java
[163 | 168 | 120]
```
1. Input files with blocks sizes:
```java
[128 | 35], [40], [120], [6]
```
Expected output file blocks sizes:
`merge`
```java
[128 | 35 | 40 | 120 | 6]
```
`merge -b`
```java
[128 | 75 | 126]
```
`merge -b -l 256`
```java
[203 | 126]
```
**Reporter**: [Ekaterina Galieva](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=Katya) / @kgalieva
**Assignee**: [Ekaterina Galieva](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=Katya) / @kgalieva
#### PRs and other links:
- [GitHub Pull Request #512](https://github.com/apache/parquet-mr/pull/512)
- [GitHub Pull Request #621](https://github.com/apache/parquet-mr/pull/621)
- [GitHub Pull Request #775](https://github.com/apache/parquet-mr/pull/775)
- [GitHub Pull Request #512](https://github.com/apache/parquet-mr/pull/512)
**Note**: *This issue was originally created as [PARQUET-1381](https://issues.apache.org/jira/browse/PARQUET-1381). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
parquet-tools にある既存の merge コマンドと、そのコマンドで使用される API から始めてください。過去の実装の背景を確認するためにリンクされた pull request を確認し、その後、ここで説明されているブロックサイズの例とコマンドオプションを検証してください。merge -b がブロックの順序を変更したり、指定された上限を超えて分割したりせずに、より大きなブロックを形成できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- cli, data-engineering
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 20/100