教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Sqoop增量导入数据操作步骤

更新时间:2021年01月26日18时24分 来源:传智教育 浏览次数:

当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所示。

图1 增量导入结果文件

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

1611656023510_22.jpg

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

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

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


猜你喜欢:

怎样安装和配置Sqoop?

Mysql查询题:多表连接,找不到连接条件怎么处理?

Mysql中怎么删除数据表?

传智教育大数据工程师培训课程