You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Joris Van den Bossche (Jira)" <ji...@apache.org> on 2020/07/03 14:48:00 UTC

[jira] [Created] (ARROW-9321) [C++][Dataset] Allow to "collect" statistics for ParquetFragment row groups if not constructed from _metadata

Joris Van den Bossche created ARROW-9321:
--------------------------------------------

             Summary: [C++][Dataset] Allow to "collect" statistics for ParquetFragment row groups if not constructed from _metadata
                 Key: ARROW-9321
                 URL: https://issues.apache.org/jira/browse/ARROW-9321
             Project: Apache Arrow
          Issue Type: Improvement
          Components: C++
            Reporter: Joris Van den Bossche


Right now, the statistics of the {{RowGroupInfo}} of ParquetFileFragments are only available when the dataset was constructed from a {{_metadata}} file:

{code:python}
import pandas as pd
df = pd.DataFrame({"part": ['A', 'A', 'B', 'B'], "col": range(4)})                                                                                                                                        
# use dask to write partitioned dataset *with* _metadata file
import dask.dataframe as dd                                                                                                                                                                               
ddf = dd.from_pandas(df, npartitions=2) 
ddf.to_parquet("test_dataset", partition_on=["part"], engine="pyarrow")                                                                                                                     

import pyarrow.dataset as ds
dataset_no_metadata = ds.dataset("test_dataset/", format="parquet", partitioning="hive")
dataset_from_metadata = ds.parquet_dataset("test_dataset/_metadata", partitioning="hive")                                                                                                                 
{code}

{code}

In [28]: list(dataset_no_metadata.get_fragments())[0].row_groups                                                                                                                                                   

In [30]: list(dataset_from_metadata.get_fragments())[0].row_groups                                                                                                                                                 
Out[30]: [<pyarrow._dataset.RowGroupInfo at 0x7fd7882c0030>]

In [32]: list(dataset_from_metadata.get_fragments())[0].row_groups[0].statistics                                                                                                                                   
Out[32]: {'col': {'min': 2, 'max': 3}, 'index': {'min': 2, 'max': 3}}
{code}

For some applications (eg dask), one could want access to those statistics, even if the original dataset / fragments were not created from a {{_metadata}} file. This should not happen automatically since it's costly, but a method to trigger collecting all metadata would be useful.

cc [~rjzamora] 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)