Я думаю, что подход 1 будет иметь дополнительные накладные расходы. Spark может попытаться записать файлы по-разному (это может быть количество файлов или сжатие или даже некоторые модификации схемы), потому что с его точки зрения вы читаете один набор данных, а затем выводите другой.
С подходом 2 вы просто копируете файлы в другую папку, данные будут точно такими же после копирования. Также вы даже можете заменить ALTER TABLE .. ADD PARTITION .. LOCATION ..
на MSCK REPAIR TABLE ..
, это сделает ваш код чище, поскольку передается меньше параметров.
Ваши (и ваша команда) предпочтения тоже имеют значение. Если все ваши рабочие процессы уже находятся в Spark, в долгосрочной перспективе будет больше вреда, если вы добавите какой-то другой тип заданий.