hive如何基于一些列将tmp表合并到历史表中如果存在则忽略,如果不存在则插入

2izufjch  于 2021-06-27  发布在  Hive
关注(0)|答案(0)|浏览(207)

我有一张table叫 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 ?
具体来说,如果有一行 answer_id and insert_time 存在于 zhihu_answer ,则什么也不做,只需忽略(对于幂等性,防止插入数据超过两次的副作用)。
另一方面,如果没有任何行具有相同的 answer_id and insert_time 作为 zhihu_answer_tmpzhihu_answer ,然后插入行(新刮取的数据)。
谢谢你对这个问题的任何建议或解决办法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题