apache / apache/parquet-java

Add merge blocks command to parquet-tools

未关闭
#2,214 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Component: Java Component: Parquet Priority: Major Type: enhancement
主要语言
Java
星标
3.1k
派生
1.6k
平均合并
3 天 12 小时
30 天内合并 PR
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 requests,了解之前实现的上下文,然后验证此处描述的块大小示例和命令选项;当 merge -b 在不重新排序或将块拆分到超过指定限制的情况下形成更大的块时,即视为完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
cli, data-engineering
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
基本清楚
新手友好度
20/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。