Allow empty row in parquet file
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.6k
- 平均マージ
- 3日 12時間
- マージ済み PR(30日)
- 33
説明
PARQUET-1851 starts abandon to write parquet files with schema (meta information), but with 0 rows, aka empty files.
In result it prevent to store empty tables in DRILL by using parquet files, for example:
```java
CREATE TABLE dfs.tmp.%s AS SELECT * FROM cp.`employee.json` WHERE 1=0
```
```java
CREATE TABLE dfs.tmp.%s AS select * from dfs.`parquet/alltypes_required.parquet` where `col_int` = 0
```
```java
create table dfs.tmp.%s as select * from dfs.`parquet/empty/complex/empty_complex.parquet`
```
So PARQUET-1851 breaks the following test cases:
```java
TestUntypedNull.testParquetTableCreation TestParquetWriterEmptyFiles.testComplexEmptyFileSchema TestParquetWriterEmptyFiles.testWriteEmptyFile TestParquetWriterEmptyFiles.testWriteEmptyFileWithSchema TestParquetWriterEmptyFiles.testWriteEmptySchemaChange TestMetastoreCommands.testAnalyzeEmptyRequiredParquetTable TestMetastoreCommands.testSelectEmptyRequiredParquetTable
```
I suggest to use warning in the process of creating empty parquet files or create alternative _endBlock_ for backward compatibility with other tools:

**Reporter**: [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 ParquetFileWriter in Drill with parquet version](https://issues.apache.org/jira/browse/DRILL-7907) (Is contained by)
- [ParquetMetadataConveter throws NPE in an Iceberg unit test](https://github.com/apache/parquet-java/issues/2487) (is broken by)
- [Error: SYSTEM ERROR: RuntimeException: Unknown logical type ](https://issues.apache.org/jira/browse/DRILL-7825) (is required by)
#### Original Issue Attachments:
- [Screenshot from 2021-04-13 08-52-56.png](https://issues.apache.org/jira/secure/attachment/13023747/Screenshot+from+2021-04-13+08-52-56.png)
**Note**: *This issue was originally created as [PARQUET-2026](https://issues.apache.org/jira/browse/PARQUET-2026). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず、TestParquetWriterEmptyFiles.testWriteEmptyFile と testWriteEmptyFileWithSchema を含む、名前が挙げられているテストを、Drill metastore のテストと併せて実行します。空ファイルの書き込み経路を追跡し、動作を記載されている PARQUET-1851 のリグレッションと比較します。空の Parquet ファイルが使用可能なスキーマメタデータを保持し、他のツールとの互換性を損なうことなく、記載されているすべてのテストに合格すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- data-engineering
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100