首页技术文章正文

Sqoop中的增量导入功能怎样使用?

更新时间:2021-01-26 来源:黑马程序员 浏览量:

1577370495235_学IT就到黑马程序员.gif

当MySQL表中的数据发生了新增或修改变化,需要更新HDFS上对应的数据时,就可以使用Sqoop的增量导入功能。Sqoop目前支持两种增量导入模式:append模式和lastmodified模式。其中,append模式主要针对INSERT新增数据的增量导入;lastmodified模式主要针对UPDATE修改数据的增量导入。

在进行增量导入操作时,首先必须指定“--check-column”参数,用来检查数据表列字段,从而确定哪些数据需要执行增量导入。例如,在执行append模式增量导入时,通常会将“--check-column”参数指定为具有连续自增功能的列(如主键id);而执行lastmodified模式增量导入时,通常会将“--check-column”参数必须指定为日期时间类型的列(如date或timestamp类型的列)。

同时,还可以为增量导入操作指定“--last-value”参数,用于只增量导入last-value值以后的记录数据,然后存储到之前HDFS上相应目录下的一个单独文件中。否则,会导入原表中所有数据到HDFS上相应目录下的一个单独文件中。

为了演示增量导入操作,首先向emp表添加新数据,指令如下所示。

INSERT INTO `emp` VALUES ('1206', 'itcast', 'java dev', '50000', 'AC');
接下来,就针对emp表数据的新增变化执行append模式的增量导入,具体指令示例如下。
$ sqoop import \

--connect jdbc:mysql://hadoop01:3306/userdb \

--username root \

--password 123456 \

--target-dir /sqoopresult \

--table emp \

--num-mappers 1 \

**--incremental append** \

**--check-column id** \

**--last-value 1205

上述增量导入的操作指令与10.4.1小节所示的指令基本相同,为了实现增量导入功能,新添加了三个参数。其中,“--incremental append”指定了使用增量导入的模式为append;“--check-column id”指定了针对表emp数据的id主键进行检查;“--last-value 1205”指定了针对id值为1205以后的数据执行增量导入。

执行上述指令后,从HDFS UI界面查看增量导入结果,如图1所示。

1611656724749_21.jpg

图1 增量导入结果文件

从图1可以看出,增量导入的数据在指定的目标目录下创建了一个新的结果文件part-m-00001,可以使用hadoop fs -cat命令查看数据,如图2所示。

1611656023510_22.jpg

图2 增量导入结果文件内容

从图2可以看出,当设置了“--last-value 1205”参数后,增量导入的新结果文件只会把指定值后的数据添加到结果文件中。

这里只演示了开发中常用的append模式的增量导入操作,读者也可以根据说明进行另一种lastmodified模式增量导入的操作。但需要注意的是,必须保证lastmodified模式增量导入的数据具有日期时间类型的列字段。


猜你喜欢:

什么是mysql事务场景?

MySQL数据库的高效检索如何实现?

Mysql视频教程:6天掌握mysql基础视频

mysql完全卸载教程五步搞定

黑马程序员大数据开发培训

分享到:
在线咨询 我要报名
和我们在线交谈!