数据库同步工具
sqlserver,Mysql数据同步软件

Sqoop增量同步mysql/oracle数据到hivemerge-key/append)测试文档

购买事宜请联系QQ:1793040

上一篇文章介绍了sqoop对蜂巢数据的完全同步。同时,前一篇文章还给出了我编写的hadoop + hive + hbase + sqoop + kylin的伪分布式安装方法。上一篇文章进行了连接:Sqoop将mysql/Oracle数据完全同步到配置单元。

本文将详细介绍如何通过实验将数据增量同步到配置单元,以及sqoop作业和crontab与无密码登录相结合的增量同步方法。

在生产环境中,系统可以定期将数据从与业务相关的关系数据库中导入到Hadoop,然后导入数据仓库以用于后续的脱机分析。因此,此时我们不可能再次重新导入所有数据。这时,我们需要将增量数据导入此模式。

有两种类型的增量数据导入。一种是基于增量列的增量数据导入(追加方法)。第二个是基于时间列的增量数据导入(LastModified模式)。用于增量导入的核心参数主要是:

-检查列

用于指定一些列。这些列用于检查在增量导入期间是否将数据作为增量数据导入。它类似于关系数据库中的自增量字段和时间戳。

注意:指定列的类型不能是任何字符类型,例如char,varchar等,并且-check-column可以指定多个列

–增量

用于指定增量导入的模式,这两种模式是Append和Lastmodified

–低值

在上次导入期间在检查列中指定指定字段的最大值

接下来,将使用详细的实验来详细解释

重要参数:

–增量附加

基于增量列的增量导入(将增量列值大于阈值的所有数据增量导入Hadoop)

-检查列

增量列(int)

–低值

阈值(int)

举一个简单的例子,在oracle库的scott用户下有一个employee表(inr_app)。该表包含:自增主键员工编号(empno),员工姓名(ename),员工职位(job),员工薪水(sal)。几个属性如下:

 

我们需要将新员工导入hadoop,以供公司的人力资源部门进行分析。目前,我们需要将此表数据导入到hive中,这是在增量导入之前的完整导入:

 

一段时间后,公司有了新一批员工。我们需要进口新员工,以供相关部门进行分析。目前,我们只需要为–incremental参数指定append,为最后一个参数指定5。能够。表示导入将仅在id大于5之后开始:

 

查询配置单元表

 

它已增加。我们还可以使用hdfs dfs-cat查看生成的数据文件。在配置hadoop环境之前,已经配置了生成的数据文件的位置。读者也可以自己访问自己的环境:IP:50070/explorer.html#/query

 

至于之前的全部数据,您还可以看到:

 

lastModify的增量导入分为两种模式:

一,–incremental附加附加模式

b,–incremental–merge-key合并模式

接下来,继续查看实验:

此方法需要原始表中的一个时间字段。它可以指定时间戳,并让Sqoop在时间戳之后将数据导入到Hadoop(此处为HDFS)。因为后续员工的薪水状态可能会更改,并且更改后时间字段的时间戳也会更改。此时,相同状态更改后,Sqoop仍将员工信息导入HDFS,因此将重复数据。

首先根据oracle库中的scott.inr_app创建一个具有时间列etltime的新表inr_las,并将现有数据时间初始化为sysdate

 

在配置单元中创建一个表。此处,列定界符被指定为” \\\\ t”,它也用作后续导入的定界符:

 

初始化完全导入:

 

查询配置单元表:

 

对于此增量导入,我们首先使用–incremental lastmodified–last-value–append来查看效果。首先,在源上更改inr_las表数据:

 

下一个增量导入:

 

查询配置单元表

 

从上面的查询结果可以看出,在雇员的工资和empno = 6的etltime记录的更改时间发生更改后,将根据上一次之后的最长时间检查增量的开始时间完全初始化。当时,找到了新的更改数据,然后将其最新状态提取到使用的附加方法hive中,因此根据您可以将最新状态更改为h的时间,将两个记录存储在hive中。获取最新数据状态。

然后继续做上面的实验环境,这次使用合并模式来查看效果:

 

首先删除上一个配置单元表

 

创建为外部表

 

请注意,目录/用户/蜂巢/仓库/exter_inr_las在第一次完全初始化期间不应该存在,它将创建自己,如果存在,它将报告该目录有错误:

 

此目录应被删除一次:

 

接下来,全部导入一批:

 

检查hdfs的该文件夹中的文件:

 

检查配置单元表:

 

接下来,修改oracle数据:

 

接下来,执行合并模式增量:

 

这时,查看/user/hive/仓库/exter_inr_las/的内容,您会发现part-m-00000已变为part-r-00000,这意味着减少:

 

发现empno = 8的记录确实已更改,并且增量同步成功。转到配置单元表:

 

没问题。由于篇幅所限,下一篇文章中介绍了sqoop作业的使用以及脚本定时数据增量同步的情况,并提供了链接:

避免输入密码后自动增加作业脚本介绍

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » Sqoop增量同步mysql/oracle数据到hivemerge-key/append)测试文档

分享到:更多 ()

syncnavigator 8.6.2 企业版

联系我们联系我们