Maarten D'Haene created DRILL-7762:
--------------------------------------
Summary: Parquet files with too many columns generated in Python
(pyarrow, pandas) are not readable
Key: DRILL-7762
URL: https://issues.apache.org/jira/browse/DRILL-7762
Project: Apache Drill
Issue Type: Bug
Components: Functions - Drill, SQL Parser, Storage - Parquet
Affects Versions: 1.17.0
Reporter: Maarten D'Haene
Fix For: Future
Attachments: error_drill_parquet.doc, shape_file_snappy512.parquet
When launching a query
|SELECT * FROM s3.datascience.`./government/shape_file_snappy512.parquet` |
on a parquet-file with too many columns generated in Python, I get following
error:
User Error Occurred: Error in drill parquet reader (complex). Message: Failure
in setting up reader Parquet Metadata: ParquetMetaData\{FileMetaData{schema:
message schema { optional int64 OBJECTID_1; optional int64 OBJECTID; optional
binary Cs012011 (UTF8); optional double Nis_012011; optional binary Sec012011
(UTF8); optional binary CS102001 (UTF8); optional binary CS031991 (UTF8);
optional binary CS031981 (UTF8); optional binary Sector_nl (UTF8); optional
binary Sector_fr (UTF8); optional binary Gemeente (UTF8); optional binary
Commune (UTF8); optional binary Arrond_nl (UTF8); optional binary Arrond_fr
(UTF8); optional binary Prov_nl (UTF8); optional binary Prov_fr (UTF8);
optional binary Reg_nl (UTF8); optional binary Reg_fr (UTF8); optional binary
Nuts1 (UTF8); optional binary Nuts2 (UTF8); optional binary Nuts3_new (UTF8);
optional int64 Inhab; optional double Gis_Perime; optional double Gis_area_h;
optional double Cad_area_h; optional double Shape_Leng; optional double
Shape_Area; optional binary codesecteu (UTF8); optional binary CD_REFNIS
(UTF8); optional binary CD_SECTOR (UTF8); optional double TOTAL; optional
double MALES; optional double FEMALES; optional double group0_14; optional
double group15_64; optional double group65ETP; optional binary areaofdis
(UTF8); }
The parquet file is generated using pyarrow with compression codec 'snappy' and
data page size 512MB. Smaller/bigger page sizes give same error. The files
originate on on-premise s3 object store (dell ecs). Other queries on the same
parquet-file (count(*), select OBJECTID_1 from .. ) succeed succesfully. Doing
a 'select *' on a parquet-file with less columns generated the same way also
run without any issues. A workaround is to export a csv-file from Python and
generate the parquet file using Drill itself starting from this csv-file
(CREATE TABLE s3.datascience.`./government/tes3` AS SELECT * FROM
s3.datascience.`./government/shape_file.csv`). Querying a parquet-file
generated this way don't result in any problems (although content is exactly
the same as parquet-file generated in Python). Is there an explanation why
Drill acts this way and what are the specifications of the parquet-file
generated by Drill itself (so we can aim to match these specification when
creating a parquet-file using Pyarrow/Pandas)?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)