NegativeArraySizeException on read for parquet files written with large strings in some cases
- Ngôn ngữ chính
- Java
- Star
- 3.1k
- Fork
- 1.6k
- Merge trung bình
- 3 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 33
Mô tả
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.*
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện lỗi đọc với dữ liệu Parquet chứa các chuỗi lớn và kiểm tra BytesInput$StreamBytesInput.toByteArray, ColumnReaderImpl.readPageV1 và DataPageV1.accept từ stack trace. So sánh hành vi với các thiết lập kích thước page và Spark reader được liệt kê. Hoàn thành khi đã hiểu nguyên nhân của lần đọc bị lỗi và đã bao phủ nó bằng một regression test mà không xảy ra NegativeArraySizeException.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- data-engineering
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 28/100