apache / apache/parquet-java

filter2 API performance regression

Offen
#1,583 17 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Component: Parquet Priority: Major Type: bug
Vorherrschende Sprache
Java
Sterne
3.1k
Forks
1.6k
Ø Merge
3 T. 12 Std.
Gemergte PRs (30 T.)
33

Beschreibung

The new filter API seems to be much slower (or perhaps I'm using it wrong \:)

Code using an UnboundRecordFilter:

```java
ColumnRecordFilter.column(column,
ColumnPredicates.applyFunctionToBinary(
input -> Binary.fromString(value).equals(input)));
```

vs. code using FilterPredicate:

```java
eq(binaryColumn(column), Binary.fromString(value));
```

The latter performs twice as slow on the same Parquet file (built using 1.6.0rc2).

Note: the reader is constructed using

```java
ParquetReader.builder(new ProtoReadSupport().withFilter(filter).build()
```

The new filter API based approach seems to create a whole lot more garbage (perhaps due to reconstructing all the rows?).

**Reporter**: [Viktor Szathmáry](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=phraktle) / @phraktle
#### Related issues:
- [FilteredRecordReader skips rows it shouldn't for schema with optional columns](https://github.com/apache/parquet-java/issues/1730) (is related to)

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, den UnboundRecordFilter-Pfad mit ColumnRecordFilter.column und ColumnPredicates.applyFunctionToBinary mit dem FilterPredicate-Pfad unter Verwendung von eq und binaryColumn zu vergleichen. Reproduziere beide Fälle mit derselben Parquet-Datei und ProtoReadSupport und messe Laufzeit und Garbage-Erzeugung; als erledigt gilt die Aufgabe, wenn die gemeldete Performance-Regression erklärt und korrigiert wurde, ohne die Filterergebnisse zu verändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
performance
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
32/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.