-
Notifications
You must be signed in to change notification settings - Fork 4k
Description
Parquet supports "dictionary encoding" of column data in a manner very similar to the concept of Categoricals in pandas. It is natural to use this encoding for a column which originated as a categorical. Conversely, when loading, if the file metadata says that a given column came from a pandas (or arrow) categorical, then we can trust that the whole of the column is dictionary-encoded and load the data directly into a categorical column, rather than expanding the labels upon load and recategorising later.
If the data does not have the pandas metadata, then the guarantee cannot hold, and we cannot assume either that the whole column is dictionary encoded or that the labels are the same throughout. In this case, the current behaviour is fine.
(please forgive that some of this has already been mentioned elsewhere; this is one of the entries in the list at dask/fastparquet#374 as a feature that is useful in fastparquet)
Reporter: Martin Durant / @martindurant
Assignee: Wes McKinney / @wesm
Related issues:
- [C++] Read Parquet dictionary encoded ColumnChunks directly into an Arrow DictionaryArray (relates to)
- [Python] CategoricalIndex is lost after reading back (is related to)
- [C++/Python] Writing dictionary encoded columns to parquet is extremely slow when using chunk size (is related to)
- [C++] Provide public API to access dictionary-encoded indices and values (is related to)
- [C++] Persist original type metadata from Arrow schemas (is related to)
- [Python] Support reading Parquet binary/string columns directly as DictionaryArray (is related to)
- [Python] Pandas categorical type doesn't survive a round-trip through parquet (is related to)
- [Python] Column metadata is not saved or loaded in parquet (supercedes)
- [C++][Parquet] Write arrow::Array directly into parquet::TypedColumnWriter (depends upon)
PRs and other links:
Note: This issue was originally created as ARROW-3246. Please see the migration documentation for further details.