Перераспределение по ключу осуществляет распределение данных на основе ключа на уровне фрейма данных. При написании фрейма данных на hdfs это отдельная вещь. Вы можете попробовать
df.coalesce(1).write.partitionBy("ss_item_sk").json(savepath)
В этом сценарии вы также увидите несколько файлов деталей в разных каталогах, созданных разделенным столбцом. Количество записывающих / восстанавливающих устройств, которые будут работать, можно контролировать только на основе метода «partitionBy». Он очень похож на Map Reduce Partitioner, так как он контролирует количество запускаемых редукторов. Чтобы получить один файл на основе столбца раздела, необходимо выполнить эту команду.
df.repartition($"ss_item_sk").write.partitionBy("ss_item_sk").json(savepath)
Теперь это работает, поскольку редуктор сопоставляется с номером раздела исполнителя.
Надеюсь, это поможет