В общих чертах, как я буду делать задачу изменения атрибутов таблиц в Hadoop:
1. Определяем изменения и формально описываем их инстансом класса (кейс класса в scala)
2. Читаем кастомным FileSourceScanExec все файлы, имя файла при этом становится одним из атрибутов, который FileScanRdd добавит к данным, должны быть метаданные для сопоставления файлов конечной таблицы (которая ещё не поменялась) и исходной (которую изменили)
3. Читаем все требуемые поля, а также первичный ключ из таблицы, где изменены данные
4. Обеспечиваем полностью эквивалентные распределения RDD для SortMergeJoin
5. Производим SortMergeJoin, получаем RDD с новой схемой, в этом поможет класс из п.2
6. Записываем кастомным FileWriter, восстанавливая имя файла, во временную директорию
7. Заменяем содержимое таблицы записанными файлами
8. При необходимости правим Hive DDL
После этого должна получиться полностью консистентная таблица, эквивалентная источнику как по составу, так и по данным. Как ни прочитай, всё будет правильно))