Как я могу форсировать (в основном) равномерное распределение?
Я хочу выполнить что-то вроде:
df.repartition(5000) // scatter
.transform(some_complex_function)
.repartition(200) // gather
.write.parquet("myresult")
Действительно, после шага перераспределения выполняется 5000 задач.Тем не менее, размер входных файлов на задачу варьируется от менее 1 МБ до 16 МБ.
Данные по-прежнему искажены.Как я могу убедиться, что он больше не перекошен и ресурсы кластера используются эффективно.
edit
Я узнал, что это связано с использованием столбцов сложного типа, то есть массивов.Также обратите внимание, что some_complex_function
работает с этим столбцом, т. Е. Его сложность увеличивается с увеличением количества элементов в массиве.
Есть ли способ лучше разделить для такого случая?