filter2 API performance regression
- 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