You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
In DataFusion, a common operation is to repartition a RecordBatch by hashing one or more columns and dividing them into partition record batches using the "formula" hash % num_partitions.
The current approach is to create the indices that match and use them to take the individual arrays (see BatchPartitioner in datafusion).
This is relatively expensive however, as we visit the arrays num_partitions times in different places, leading to cache inefficient.
Describe the solution you'd like
I would like to have a method in arrow-rs that takes an Array with partition numbers (0..) and spreads the rows of the Array(s) into a Vec<Array> and/or Vec<RecordBatch>.
Describe alternatives you've considered
Additional context
The text was updated successfully, but these errors were encountered:
Makes sense to me, of course assuming it empirically shows a performance improvement over using take. It occurs to me this would trade write locality for read locality, which may not be beneficial.
it is better to take multiple input arrays than a single array? it makes many small fragment arrays (which has less performance and wastes a lot of memory) if the number of partitions is big.
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
In DataFusion, a common operation is to repartition a RecordBatch by hashing one or more columns and dividing them into
partition
record batches using the "formula"hash % num_partitions
.The current approach is to create the indices that match and use them to
take
the individual arrays (seeBatchPartitioner
in datafusion).This is relatively expensive however, as we visit the arrays
num_partitions
times in different places, leading to cache inefficient.Describe the solution you'd like
I would like to have a method in arrow-rs that takes an Array with
partition
numbers (0..) and spreads the rows of the Array(s) into aVec<Array>
and/orVec<RecordBatch>
.Describe alternatives you've considered
Additional context
The text was updated successfully, but these errors were encountered: