Sqoop1.4.4 实现将 Oracle10g 中的增量数据导入 Hive0(2)

步骤2:通过Hive将“全量表+增量表”合并为“更新后的全量表”,覆盖当前的全量表

合并新表的逻辑如下:

整个tmp表进入最终表中

all表的数据中不包含在tmp表service_code范围内的数据全部进入新表

执行以下sql语句可以合并得到更新后的全量表:

hive> select * from service_tmp union all select a.* from service_all a left outer join service_tmp b on a.service_code = b.service_code where b.service_code is null;

 

我们需要直接将查询结果更新回全量表中:

hive> insert overwrite table service_all select * from service_tmp union all select a.* from service_all a left outer join service_tmp b on a.service_code = b.service_code where b.service_code is null;

 

 

注意,将查询结果插入表有以下两类语法:

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

INSERT OVERWRITE 将会覆盖现有数据,由于当前场景需要更新全量表,所以使用了覆盖模式;

INSERT INTO 不会覆盖现有数据,是追加数据

 

到此为止,Hive中的service_all表已经更新为最新的数据!

在真实场景中,需要结合shell+cron实现该过程的定时执行。

通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据

[Hadoop] Sqoop安装过程详解

用Sqoop进行MySQL和HDFS系统间的数据互导

Hadoop Oozie学习笔记 Oozie不支持Sqoop问题解决

Hadoop生态系统搭建(hadoop hive hbase zookeeper oozie Sqoop)

Hadoop学习全程记录——使用Sqoop将MySQL中数据导入到Hive中

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/69bf62d7b174540dd24684f896eef720.html