Предположим, у меня есть DataFrame со столбцом partition_id
:
n_partitions = 2
df = spark.sparkContext.parallelize([
[1, 'A'],
[1, 'B'],
[2, 'A'],
[2, 'C']
]).toDF(('partition_id', 'val'))
Как я могу перераспределить DataFrame, чтобы гарантировать, что каждое значение partition_id
направляется в отдельный раздел, и что точностолько фактических разделов, сколько существует различных значений partition_id
?
Если я сделаю хэш-раздел, то есть df.repartition(n_partitions, 'partition_id')
, это гарантирует правильное количество разделов, но некоторые разделы могут быть пустыми, а другие могут содержатьмножественные значения partition_id
из-за коллизий хешей.