[ https://issues.apache.org/jira/browse/ARROW-2659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17072806#comment-17072806 ]
Joris Van den Bossche commented on ARROW-2659: ---------------------------------------------- The original root cause of this issue ({{write_to_dataset}} outputting parquet files with different schemas) has already been solved a while ago in ARROW-2891 The other mentioned issues (when reading a dataset, we should allow for basic schema evolution like allowing null -> any type promotion) are in the meantime solved in the Arrow Datasets project. So once we use the datasets API under the hood in pyarrow.parquet (ARROW-8039), this issue should be solved (we can still add a test for it to close this issue) > [Python] More graceful reading of empty String columns in ParquetDataset > ------------------------------------------------------------------------ > > Key: ARROW-2659 > URL: https://issues.apache.org/jira/browse/ARROW-2659 > Project: Apache Arrow > Issue Type: Bug > Components: C++, Python > Affects Versions: 0.9.0 > Reporter: Uwe Korn > Priority: Major > Labels: dataset, dataset-parquet-read, parquet > Attachments: read_parquet_dataset.error.read_table.novalidation.txt, > read_parquet_dataset.error.read_table.txt > > > When currently saving a {{ParquetDataset}} from Pandas, we don't get > consistent schemas, even if the source was a single DataFrame. This is due to > the fact that in some partitions object columns like string can become empty. > Then the resulting Arrow schema will differ. In the central metadata, we will > store this column as {{pa.string}} whereas in the partition file with the > empty columns, this columns will be stored as {{pa.null}}. > The two schemas are still a valid match in terms of schema evolution and we > should respect that in > https://github.com/apache/arrow/blob/79a22074e0b059a24c5cd45713f8d085e24f826a/python/pyarrow/parquet.py#L754 > Instead of doing a {{pa.Schema.equals}} in > https://github.com/apache/arrow/blob/79a22074e0b059a24c5cd45713f8d085e24f826a/python/pyarrow/parquet.py#L778 > we should introduce a new method {{pa.Schema.can_evolve_to}} that is more > graceful and returns {{True}} if a dataset piece has a null column where the > main metadata states a nullable column of any type. -- This message was sent by Atlassian Jira (v8.3.4#803005)