Начиная с версии 2.4, вы можете подсказать запрос для управления выводом:
INSERT ... SELECT /*+ COALESCE(numPartitions) */ ...
INSERT ... SELECT /*+ REPARTITION(numPartitions) */ ...
Например, это сгенерирует 5 файлов:
CREATE TABLE business.clients
AS
SELECT /*+ REPARTITION(5) */
client_id,
country,
wallet
FROM business.users;
До Spark 2.4, способ было бы ограничить количество разделов для всего запроса:
SET spark.sql.shuffle.partitions = 5;
Но это потенциально может повлиять на производительность процесса.
Дополнительная информация здесь https://issues.apache.org/jira/browse/SPARK-24940