Hive, как объединить таблицу tmp в таблицу истории на основе некоторых столбцов.если есть то игнорируй, если нет то вставь - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть таблица с именем zhihu_answer.Я воспринимаю это как хранилище для хранения данных, извлеченных изо дня в день.Каждый день там будет создаваться таблица zhihu_answer_tmp, в которой хранятся вновь очищенные данные, которые разделяют ту же структуру данных, что и zhihu_answer.

. DDL:

createtab_stmt  
CREATE TABLE `zhihu_answer`(    
  `admin_closed_comment` boolean,   
  `answer_content` string,  
  `answer_created` string,  
  `answer_id` string,   
  `insert_time` string,         
  `voteup_count` int)   
PARTITIONED BY (`year_month` string)    

Я взял answer_id и insert_time как уникальный ключ, мой вопрос заключается в том, как объединить новые данные в zhihu_answer_tmp в таблицу исторических данных zhihu_answer на основе answer_id и insert_time?

В частности, если в zhihu_answer существует строка с таким же answer_id and insert_time, то ничего не делать, просто игнорировать (для идемпотентности, не допускать побочных эффектов от вставки данных более двух раз).

С другой стороны, если нет строк с таким же answer_id and insert_time, как у zhihu_answer_tmp в zhihu_answer, вставьте строки (новые данные).

Спасибо за любой советили любое решение вопроса.

...