导入 Import--增量导入--Lastmodified 模式(附加数据)| 学习笔记

简介: 快速学习 导入 Import--增量导入--Lastmodified 模式(附加数据)

开发者学堂课程【Sqoop 企业级大数据迁移方案实战导入 Import--增量导入--Lastmodified 模式(附加数据)学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/718/detail/12839


导入 Import--增量导入--Lastmodified 模式(附加数据)


一、增量导入

last modified(上一次的更新时间),这种模式下的增量跟表中的时间戳相关,时间这种类型的字段能够表示数据的变化。

首先创建一个 customer 表,指定一个时间戳字段:

Create   table   customer test (id int name var char(20),last mod

timestamp default current timestamp on update current timestamp);

第一个字段 id int,第二个字段 name var char,第三个字段叫做 last mod(上次更新时间),它的类型是timestamp(时间戳类型),default 如果不指定,默认值会是当前系统的时间 current times,而且在更新的时候数据发生修改也未修改为更新的当前时间,就意味着表当中的这个字段会在数据产生变化的时候呢都会更新时间。

首先打 my circle(查询),将以上进行复制,运行并刷新,会发现多了一个名为 customer-test

将以下分别插入如下记录:

insert into customertest(idname)values(1neil’):

insert into customertest(idname)values(2.jack’):

insert into customertest(idname)values(3martin):insertintocustomertest(idname)values(4,tony);insertintocustomertest(idname)values(5,eric);

可以将以上代码进行分别复制和运行,会出现对应的时间

执行 sqoop 指令将数据全部导入 hdfs:

bin/sqoop import\

--connect jdbc:mysql://node-1:3306/userdb

--username root\

--password hadoop\

--target-dir/lastmodifiedresult\

--table customertest-m1

服务器已经提示完成后显示会有五条记录,进行刷新与核对。

改变表数据:

再去 insert 一条记录,进行复制

insert into customer-test(id name) values (6,"James")

运行后,相当于在 customer-test 多了一条数据。

根据时间戳进行增量的导入:

bin/sqoop import \

-connect jdbc:mysql://node-1:3306/userdb\

-username root\

-password hadoop\

-table customertest\

-target-dir /lastmodifiedresult \

--check-column last mod \

--incremental lastmodified\

--last-value "2019-05-28 18:42:06"\

--m1\

--append

追加模式:check-column(检测字段)叫做 last mod,追加模式是 last modified,把上一次五条记录粘贴过来,append 进行追加。

将以上代码进行复制,进行运行后会发现出现两条记录,发现刚才的时间又重复了一遍,这是因为采用 last modified 模式去处理增量时,会将大于等于 last-value 值的数据当做增量插入。所以一定要避免导入数据重复的问题。

小记:

增量数据的导入

1、所谓的增量数据指的是上次至今中间新增加的数据

2、osgaop 支持两种模式的增量导入

(1)append 追加根据数值类型字段进行追加导入大于指定的 last-value

(2)lastmodified 根据时间戳类型字段进行追加 大于等于指定的 lastvalue

(3)注意在 lastmodified 模式下还分为两种情形:append merge-key

相关文章
|
6月前
|
Java
Springboot 导出word,动态填充表格数据
Springboot 导出word,动态填充表格数据
|
6月前
|
前端开发
Antd中Table列表行默认包含修改及删除功能的封装
Antd中Table列表行默认包含修改及删除功能的封装
155 0
|
JavaScript
VUE之vxe-table高级表格(表格内增删改、导入、导出、自定义打印、列设置隐藏显示等)用法
VUE之vxe-table高级表格(表格内增删改、导入、导出、自定义打印、列设置隐藏显示等)用法
7864 0
VUE之vxe-table高级表格(表格内增删改、导入、导出、自定义打印、列设置隐藏显示等)用法
|
6月前
|
前端开发 Java Maven
springboot优雅的实现excel的导出(自适应列宽实现,中文也行),复制可用
springboot优雅的实现excel的导出(自适应列宽实现,中文也行),复制可用
246 0
|
6月前
|
XML Java BI
​ 文件导出
​ 文件导出
41 1
|
6月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
76 0
|
Java Android开发
eclipse保存自动组织导入、删除不必要的导入、格式化代码
eclipse保存自动组织导入、删除不必要的导入、格式化代码
|
JavaScript
【ES6】模块化语法(默认、按需导入import导出export的操作)
ES6模块化语法(默认、按需导入导出的操作)
【ES6】模块化语法(默认、按需导入import导出export的操作)
jeasypoi导入excel,数字列导入失败解决办法
jeasypoi导入excel,数字列导入失败解决办法
428 0
jeasypoi导入excel,数字列导入失败解决办法
|
分布式计算 Hadoop 关系型数据库
导入 Import--增量导入--Append 模式 | 学习笔记
快速学习 导入 Import--增量导入--Append 模式
344 0
导入 Import--增量导入--Append 模式 | 学习笔记