У меня есть огромная внешняя таблица улья, в которой хранятся данные ежедневных транзакций. У меня есть работа выходного дня, которая в основном находит дубликаты на основе ключа, перемещает их в архивную таблицу и сохраняет уникальные строки (на основе ключа) в фактической таблице Hive.
Пример:
Create temporary table my_temp_tbl as select row_number() over(partition by k1,k2,k3) rn ,* from my_tran_tbl;
Insert into my_tran_tbl_archive partition (p1,p2,p3)
select f1,f2,f3,... from my_tran_tbl where rn !=1;
Insert overwrite table my_tran_tbl partition (p1,p2,p3)
select f1,f2,f3,... from my_tran_tbl where rn =1;
Проблема, которую я вижу здесь при таком подходе, заключается даже в том, что нет дубликатов или очень мало дубликатов. Я всегда перезаписываю весь набор данных в таблице. Есть ли лучший способ сделать это? Текущий подход также не подходит для огромных таблиц кустов с «ошибкой времени выполнения куста при закрытии операторов», вызванной
исключение connecttimeout: 60000 миллисекунд ожидания при ожидании готовности канала к соединению
Любая помощь будет высоко ценится