Skip to content

[C++][Dataset] Also allow integer partition fields to be dictionary encoded #26114

@asfimport

Description

@asfimport

In ARROW-8647, we added the option to indicate that you partition field columns should be dictionary encoded, but it currently does only do this for string type, and not for integer type (wiht the reasoning that for integers, it is not giving any memory efficiency gains to use dictionary encoding).

In dask, they have been using categorical dtypes for all partition fields, also if they are integers. They would like to keep doing this (apart from memory efficiency, using categorical/dictionary type also gives information about all uniques values of the column, without having to calculate this), so it would be nice to enable this use case.

So I think we could either simply always dictionary encode also integers when max_partition_dictionary_size indicates partition fields should be dictionary encoded, or either have an additional option to indicate also integer partition fields should be encoded (if the other option indicates dictionary encoding should be used).

Based on feedback from the dask PR using the dataset API at dask/dask#6534 (comment)

cc @rjzamora @bkietz

Reporter: Joris Van den Bossche / @jorisvandenbossche
Assignee: Ben Kietzman / @bkietz

PRs and other links:

Note: This issue was originally created as ARROW-10099. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions