apache / apache/parquet-testing

Improve integration tests between implementations

Open
#51 3 comments 0 reactions 0 assignees View on GitHub
Component: Parquet Component: Testing Priority: Major Type: test
Dominant language
Python
Stars
90
Forks
79
Avg merge
15d 20h
Merged PRs (30d)
1

Description

We have a lack of proper integration tests between components. Fortunately, we already have a git repository to upload test data: https://github.com/apache/parquet-testing.

The idea is the following.
Create a directory structure for the different versions of the implementations containing parquet files with defined data. The structure definition shall be self-descriptive so we can write integration tests that reads the whole structure automatically and also works with files to be added later.

The following directory structure is an example for the previous requirements:
```

test-data/
├── impala
│   ├── 3.2.0
│   │   └── basic-data.parquet
│   ├── 3.3.0
│   │   └── basic-data.parquet
│   └── 3.4.0
│   ├── basic-data.lz4.parquet
│   ├── basic-data.snappy.parquet
│   ├── some-specific-issue-2.parquet
│   ├── some-specific-issue-3.csv
│   ├── some-specific-issue-3_mode1.parquet
│   ├── some-specific-issue-3_mode2.parquet
│   └── some-specific-issue-3.schema
├── parquet-cpp
│   ├── 1.5.0
│   │   ├── basic-data.lz4.parquet
│   │   └── basic-data.parquet
│   └── 1.6.0
│   ├── basic-data.lz4.parquet
│   └── some-specific-issue-2.parquet
├── parquet-mr
│   ├── 1.10.2
│   │   └── basic-data.parquet
│   ├── 1.11.1
│   │   ├── basic-data.parquet
│   │   └── some-specific-issue-1.parquet
│   ├── 1.12.0
│   │   ├── basic-data.br.parquet
│   │   ├── basic-data.lz4.parquet
│   │   ├── basic-data.snappy.parquet
│   │   ├── basic-data.zstd.parquet
│   │   ├── some-specific-issue-1.parquet
│   │   └── some-specific-issue-2.parquet
│   ├── some-specific-issue-1.csv
│   └── some-specific-issue-1.schema
├── basic-data.csv
├── basic-data.schema
├── some-specific-issue-2.csv
└── some-specific-issue-2.schema
```
Parquet files are created at leaf level. The expected data is saved in a csv format (to be specified: separators, how to save binary etc.), the expected schema (to specify the data types independently from the parquet files) are saved in .schema files. The csv and schema files can be saved on the same level of the parquet files or upper levels if they are common to several parquet files.

Any comments about the idea are welcomed.

**Environment**:
{noformat}
*no* further _formatting_ is done here
{noformat}

**Reporter**: [Gabor Szadovszky](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=gszadovszky) / @gszadovszky

**Note**: *This issue was originally created as [PARQUET-1985](https://issues.apache.org/jira/browse/PARQUET-1985). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the parquet-testing repository and the example directory structure in this issue. Define the CSV and schema conventions, then organize implementation-version directories and representative Parquet test data so shared expected data can be discovered automatically and files added later fit the same structure.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-engineering, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.