NegativeArraySizeException on read for parquet files written with large strings in some cases
- Lingua principale
- Java
- Stelle
- 3.1k
- Fork
- 1.6k
- Merge medio
- 3g 12h
- PR unite (30g)
- 33
Descrizione
On Spark 3.3.1 which uses parquet 1.12.2, parquet files were successfully created using default parquet configs. Note: the write succeeded, so this is not the same as: https://issues.apache.org/jira/browse/PARQUET-1632
The payload had large strings and this resulted in the following exception on read:
```java
Caused by: java.lang.NegativeArraySizeException
at org.apache.parquet.bytes.BytesInput$StreamBytesInput.toByteArray(BytesInput.java:262)
at org.apache.parquet.bytes.BytesInput.toByteBuffer(BytesInput.java:214)
at org.apache.parquet.bytes.BytesInput.toInputStream(BytesInput.java:223)
at org.apache.parquet.column.impl.ColumnReaderImpl.readPageV1(ColumnReaderImpl.java:592)
at org.apache.parquet.column.impl.ColumnReaderImpl.access$300(ColumnReaderImpl.java:57)
at org.apache.parquet.column.impl.ColumnReaderImpl$3.visit(ColumnReaderImpl.java:536)
at org.apache.parquet.column.impl.ColumnReaderImpl$3.visit(ColumnReaderImpl.java:533)
at org.apache.parquet.column.page.DataPageV1.accept(DataPageV1.java:95)
```
The issue could be addressed with the following configs:
```java
parquet.page.size.row.check.min=1
parquet.page.size.row.check.max=1000
parquet.page.size.check.estimate=false
spark.sql.parquet.columnarReaderBatchSize=2098
```
**Reporter**: [Atul Felix Payapilly](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=atulpayapilly_amazon)
**Note**: *This issue was originally created as [PARQUET-2367](https://issues.apache.org/jira/browse/PARQUET-2367). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia riproducendo il fallimento della lettura con dati Parquet contenenti stringhe di grandi dimensioni e analizza BytesInput$StreamBytesInput.toByteArray, ColumnReaderImpl.readPageV1 e DataPageV1.accept dallo stack trace. Confronta il comportamento con le impostazioni indicate per la dimensione delle pagine e il lettore Spark. Il lavoro è completato quando la lettura che fallisce è compresa e coperta da un test di regressione senza NegativeArraySizeException.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- data-engineering
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 28/100