1.导入概念

在Sqoop中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用 import 关键字。

2.增量导入

当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数据,导入数仓后进行后续离线分析。这种情况下我们不可能将所有数据重新再导入一遍,所以此时需要数据增量导入。

增量导入数据分为两种方式:

  • 基于递增列的增量数据导入(Append方式)。
  • 基于时间列的数据增量导入(LastModified方式)。

工具描述

  • –check-column (col)
    用来指定一些列,这些咧在增量到日时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。
    注意:这些被指定的列的类型不能是任意字符类型,如char、varchar等类型都是不可以的,同时–check-column可以去指定多个列。
  • –incremental (mode)
  • append:追加,比如对大于last-value指定的值之后的记录进行追加导入
  • lastmodified:最后的修改时间,追加last-value指定的日期之后的记录
  • –last-value (value) 指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一列

使用

1.append模式

mysql中有good表如下

DROP TABLE IF EXISTS `good`;
CREATE TABLE `good` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fname` varchar(100) DEFAULT NULL,
  `fdesc` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

SET FOREIGN_KEY_CHECKS = 1;

指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一列

sqoop import \
--connect jdbc:mysql://hadoop2:3306/niit?useSSL=false \
--username root \
--password 123456 \
--table good --m 1 \
--target-dir /appendresult \
--delete-target-dir \(如果路径存在就会自动删除)
--incremental append \
--check-column id \
--last-value 3

执行成功后查看导入成功的数据

全是id大于3的数据

HIVE增量备份恢复方案 hive增量导入_hive

2.lastmodified模式

此模式要求检查列必须是时间戳类型,使用于当数据源表可能更新且每次更新都会把last-modified列的值设为当前时间戳,sqoop只会导入检查列时间戳数值大于等于–last-value指定的时间戳数值的那些记录。
在mysql中创建一张新表

CREATE TABLE customer (
	id INT,
	name VARCHAR ( 100 ),
	last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
);

导入hdfs

sqoop import \
--connect jdbc:mysql://lingyun2:3306/niit?useSSL=false \
--username root \
--password 123456 \
--target-dir /lastmodifiedresult \
--table customer
--m 1

全部导入

HIVE增量备份恢复方案 hive增量导入_hadoop_02


重新导入mysql一条数据

insert into customer(id,name) values(7,'haha');
insert into customer(id,name) values(8,'dudu');

导入hdfs 指定last-value

sqoop import \
--connect jdbc:mysql://lingyun2:3306/niit?useSSL=false \
--username root \
--password 123456 \
--target-dir /lastmodifiedresult \
--table customer \
--check-column last_modified \
--incremental lastmodified \
--last-value "2023-02-23 04:49:02" \
--m 1 \
--append

HIVE增量备份恢复方案 hive增量导入_sqoop_03


HIVE增量备份恢复方案 hive增量导入_linux_04