Я обрабатываю файл, для которого я запускаю repartition(48, key)
перед сохранением в виде дельты. При первоначальном запуске он генерирует около 25 разделов в пределах дельты (нет проблем, поскольку возможно, что ключ привел к тому, что данные попали в 25 разделов - я предполагаю, что это не обязательно создает раздел для узла, на котором не было данных?).
Однако при втором запуске, которое выполняется с помощью MERGE, было сгенерировано более 60 файлов разделов (это процесс SCD с 1700 уже существующими ключами и только 300 новыми ключами).
Насколько я понимаю, repartition
использует алгоритм хеширования, чтобы определить, в какой из разделов попадает ключ, поэтому, если это так, как он создал больше файлов разделов, чем определенные разделы?
Пример кода:
df = spark.read...
key = ["COL_A"]
partitions = 48
df.repartition(partitions, *[col(c) for c in key])
df.explain
журнал и свой код для лучшего понимания - person kavetiraviteja   schedule 23.09.2020