apache / apache/parquet-java

ParquetWriter::close sometimes fail

Abierto
#1,701 1 comentario 0 reacciones 0 asignados Ver en GitHub
Component: Java Component: Parquet Priority: Major Type: bug
Lenguaje dominante
Java
Estrellas
3.1k
Forks
1.6k
Merge medio
3 d 12 h
PR fusionados (30 d)
33

Descripción

we sometimes run into an exception when closing a ParquetWriter instance:

 
```java

2024-06-10 10:44:01.398    org.apache.parquet.util.AutoCloseables$ParquetCloseResourceException: Unable to close resource
2024-06-10 10:44:01.398        at org.apache.parquet.util.AutoCloseables.uncheckedClose(AutoCloseables.java:85)
2024-06-10 10:44:01.398        at org.apache.parquet.util.AutoCloseables.uncheckedClose(AutoCloseables.java:94)
2024-06-10 10:44:01.398        at org.apache.parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:144)
2024-06-10 10:44:01.398        at org.apache.parquet.hadoop.ParquetWriter.close(ParquetWriter.java:437)
2024-06-10 10:44:01.398    Caused by: java.nio.channels.ClosedChannelException: null
2024-06-10 10:44:01.398        at org.apache.hadoop.hdfs.ExceptionLastSeen.throwException4Close(ExceptionLastSeen.java:73)
2024-06-10 10:44:01.398        at org.apache.hadoop.hdfs.DFSOutputStream.checkClosed(DFSOutputStream.java:158)
2024-06-10 10:44:01.398        at org.apache.hadoop.hdfs.DFSOutputStream.flushOrSync(DFSOutputStream.java:639)
2024-06-10 10:44:01.398        at org.apache.hadoop.hdfs.DFSOutputStream.hflush(DFSOutputStream.java:594)
2024-06-10 10:44:01.398        at org.apache.hadoop.fs.FSDataOutputStream.hflush(FSDataOutputStream.java:136)
2024-06-10 10:44:01.398        at org.apache.parquet.hadoop.util.HadoopPositionOutputStream.close(HadoopPositionOutputStream.java:65)
2024-06-10 10:44:01.398        at org.apache.parquet.hadoop.ParquetFileWriter.close(ParquetFileWriter.java:1663)
2024-06-10 10:44:01.398        at org.apache.parquet.util.AutoCloseables.close(AutoCloseables.java:49)
2024-06-10 10:44:01.398        at org.apache.parquet.util.AutoCloseables.uncheckedClose(AutoCloseables.java:83)
```

**Reporter**: [Roelof Naude](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=naude-r)

**Note**: *This issue was originally created as [PARQUET-2496](https://issues.apache.org/jira/browse/PARQUET-2496). 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

Rastrea la ruta de cierre desde ParquetWriter.close pasando por InternalParquetRecordWriter.close, ParquetFileWriter.close y HadoopPositionOutputStream.close, utilizando el stack trace de ClosedChannelException proporcionado como punto de partida. Determina las condiciones que dejan cerrado el canal de salida de HDFS antes de hflush; después, añade cobertura para el fallo intermitente y verifica que el cierre de un ParquetWriter se complete sin esta excepción.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
hadoop, java
Área
data-engineering
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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.