filter2 API performance regression
- Lenguaje dominante
- Java
- Estrellas
- 3.1k
- Forks
- 1.6k
- Merge medio
- 3 d 12 h
- PR fusionados (30 d)
- 33
Descripción
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.*
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza comparando la ruta de UnboundRecordFilter mediante ColumnRecordFilter.column y ColumnPredicates.applyFunctionToBinary con la ruta de FilterPredicate mediante eq y binaryColumn. Reproduce ambos casos con el mismo archivo Parquet y ProtoReadSupport, y mide el tiempo de ejecución y la creación de basura; se considerará terminado cuando se explique y corrija la regresión de rendimiento notificada sin cambiar los resultados del filtrado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 32/100