[
https://issues.apache.org/jira/browse/PARQUET-364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Cheng Lian updated PARQUET-364:
-------------------------------
Description:
The problematic Avro and Thrift schemas are:
{noformat}
record AvroArrayOfArray {
array<array<int>> int_arrays_column;
}
{noformat}
and
{noformat}
struct ThriftListOfList {
1: list<list<i32>> intArraysColumn;
}
{noformat}
They are converted to the following Parquet schemas by parquet-avro 1.7.0 and
parquet-thrift 1.7.0 respectively:
{noformat}
message AvroArrayOfArray {
required group int_arrays_column (LIST) {
repeated group array (LIST) {
repeated int32 array;
}
}
}
{noformat}
and
{noformat}
message ParquetSchema {
required group intListsColumn (LIST) {
repeated group intListsColumn_tuple (LIST) {
repeated int32 intListsColumn_tuple_tuple;
}
}
}
{noformat}
{{AvroIndexedRecordConverter}} cannot decode such records correctly. The reason
is that the 2nd level repeated group {{array}} doesn't pass
{{AvroIndexedRecordConverter.isElementType()}} check. We should check for field
name "array" and field name suffix "_thrift" in {{isElementType()}} to fix this
issue.
was:
The following Avro schema
{noformat}
record AvroNonNullableArrays {
array<array<int>> int_arrays_column;
}
{noformat}
is translated into the following Parquet schema by parquet-avro 1.7.0:
{noformat}
message root {
required group int_arrays_column (LIST) {
repeated group array (LIST) {
repeated int32 array;
}
}
}
{noformat}
{{AvroIndexedRecordConverter}} cannot decode such records correctly. The reason
is that the 2nd level repeated group {{array}} doesn't pass
{{AvroIndexedRecordConverter.isElementType()}} check. We probably should check
for field name "array" in {{isElementType()}} to fix this issue.
> Parque-avro cannot decode Avro/Thrift array of primitive array (e.g.
> array<array<int>>)
> ---------------------------------------------------------------------------------------
>
> Key: PARQUET-364
> URL: https://issues.apache.org/jira/browse/PARQUET-364
> Project: Parquet
> Issue Type: Bug
> Components: parquet-mr
> Affects Versions: 1.5.0, 1.6.0, 1.7.0, 1.8.0
> Reporter: Cheng Lian
>
> The problematic Avro and Thrift schemas are:
> {noformat}
> record AvroArrayOfArray {
> array<array<int>> int_arrays_column;
> }
> {noformat}
> and
> {noformat}
> struct ThriftListOfList {
> 1: list<list<i32>> intArraysColumn;
> }
> {noformat}
> They are converted to the following Parquet schemas by parquet-avro 1.7.0 and
> parquet-thrift 1.7.0 respectively:
> {noformat}
> message AvroArrayOfArray {
> required group int_arrays_column (LIST) {
> repeated group array (LIST) {
> repeated int32 array;
> }
> }
> }
> {noformat}
> and
> {noformat}
> message ParquetSchema {
> required group intListsColumn (LIST) {
> repeated group intListsColumn_tuple (LIST) {
> repeated int32 intListsColumn_tuple_tuple;
> }
> }
> }
> {noformat}
> {{AvroIndexedRecordConverter}} cannot decode such records correctly. The
> reason is that the 2nd level repeated group {{array}} doesn't pass
> {{AvroIndexedRecordConverter.isElementType()}} check. We should check for
> field name "array" and field name suffix "_thrift" in {{isElementType()}} to
> fix this issue.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)