当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 \
--us