导入 Import--增量导入--Append 模式 | 学习笔记

简介: 快速学习 导入 Import--增量导入--Append 模式

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

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


导入 Import--增量导入--Append 模式


内容介绍:

一、Append 模式增量导入

二、Lastmodified 模式增量导入

三、Lastmodified 模式:appendmerge-key

 

在企业中实际工作当中,比如公司从今天开始成立了数据分析部门,今天需要做的就是把所有的数据全部导入进来,这叫做全量数据,导入之后过了一个星期之后有需要分析需要分析,老板要求把新增加的数据导入进来进行分析,这个时候就没有必要把所有数据从零开始全部导入进来,只需要把这一个星期之内新增加的数据导入进来,新增加的数据就被称为增量数据,在企业的实际工作当中,往往数据的导入都是增量数据的导入而不是每次都需要把全部表的数据都导入进来,因为这样的导入第一工作量比较大,第二之前导过再导入会产生数据的重复,那么 sqoop 在底层也满足增量导入,其实要想支持增量导入首先需要一个判断的依据,我上一次干到哪里了,这一次需要从哪里继续,叫增量导入。比如说导入一个叫学生的表,上一周导入到了学生编号为1202,那么这周就应该从1203开始导入,下一周导入到1303,这样从理论上猜想他的技术,有一个判断的依据来作为检测某一字段是不是有增量的变化。在 sqoop 进行增量导入有三个核心参数来控制,如下:

--check - columnl ( col )

用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。这个列不是瞎导入,比如说制定学生姓名,上一次导入到张三,这次是李四就是不可以的。这个字段往往是组件是数字字段或时间戳,因为字增长不重复。并且字段可以指定多个,比如制定一个id组件再指定一个更新的时间。

注意:这些被指定的列的类型不能使任意字符类型,如 char varchar 等类型都是不可以的,同时--check -column 可以去指定多个列。

-- incremental ( mode )增量导入的模式

append :追加,比如对大于 last - value 指定的值之后的记录进行追加导入。

lastmodified:最后的修改时间,追加 last - value 指定的日期之后的记录。

-- last - value ( value )

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

增量导入是仅导入新添加的表中的行的技术。

 

一、 Append 模式增量导入

执行以下指令先将我们之前的数据导入:

bin / sqoop import \

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

--username root \

--password hadoop \

--target - dir / appendresult \

--table empm1

使用 hadoop fs - cat 查看生成的数据文件,发现数据已经导入到 hdfs 中。

然后在 mysql emp 中插入2条增量数据:

image.png

执行如下的指令,实现增量的导入:

bin / sqoop import \

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

--username root \-- password hadoop \

-- table emp --m 1\

-- target - dir / appendresult \

--incremental append \

--check - column id \(检测字段为 id

-- last - value 1205

image.png

最后验证导入数据目录 可以发现里面多了一个文件 里面就是增量数据

image.png

打开脚本,首先把之前所有的数据进行全量导入,把 emp 表中的全部数据导入 appendresult 中,有五条数据,

发现现在这个表中的全量数据跟增量没有关系,

image.png

接下来模拟经过一天产生了新的数据,往表中插入两条记录,insert into 复制下来,

image.png

新建一个查询,选中做一个运行,

image.png

然后刷新 emp 数据记录表发现多了两条数据。

image.png

append 为追加模式,--check - column id 检测字段 id-- last - value 1205猜想这次应该从1206开始导入。

image.png

接下来看看是否能把增加的数据全部导入,有没有重复有没有问题。打开 sqoop 进行执行,sqoop 必须借助 m 码来执行,所以需要一定的时间。在网页中发现现在又多了一个新的文件-00001

image.png

打开文件发现里面只有1206,1207两条数据,这样就满足了增量数据的追加导入。

image.png

在进行 append 时,上一次检测的字段往往是数值类型的,不能乱写,至于数值是多少,由自己来指定,默认为上次的最大值,比如说这次结束时是1207,那么下次就从1208开始。要注意细节,不要造成数据的重复。

相关文章
C# 解决引用dll,出现dll不可以使用等问题
C# 解决引用dll,出现dll不可以使用等问题
|
存储 Cloud Native API
oss云网关配置
配置阿里云OSS与云网关实现灵活数据传输和访问控制。步骤包括开通OSS服务,创建Bucket,获取访问凭证,可选配置CORS和生命周期规则。云网关配置涉及阿里云云原生网关的代理规则设定或使用云存储网关集成OSS访问,具体配置需参照产品文档,因产品更新可能会有变动。
447 1
|
传感器 存储 算法
Python OpenCV 蓝图:1~5
Python OpenCV 蓝图:1~5
455 0
|
应用服务中间件 nginx
【已解决】nginx 502 Bad Gateway 问题排查
nginx 502 Bad Gateway 问题排查
15795 0
【已解决】nginx 502 Bad Gateway 问题排查
|
8月前
|
人工智能 安全 搜索推荐
如何使用DeepSeek提高工作效率和生活质量?
普通工作者可通过DeepSeek显著提升效率和生活质量。工作方面,3秒生成文档、10分钟完成会议管理、数据处理自动化;生活方面,规划旅行、制定食谱、即时学习助手。使用技巧如“角色+任务+具体要求”提问公式,每天节省2小时,逐步培养“AI优先”思维,让琐事时间用于自我提升或陪伴家人。
385 0
|
算法 网络协议 数据安全/隐私保护
NTP网络时间同步协议详解
NTP协议是互联网上用于同步计算机时间的标准,它利用分布式时间服务器网络,通过分层管理和本地路由算法确保时间的准确性。协议涉及时间偏差、延迟和差量三个概念,用于测量与参考时钟的同步状态。基本NTP数据包包含48字节,如头部和时间戳,关键字段如跳跃指示器(LI)、版本号(VN)、模式(Mode)、层次(Stratum)等影响同步过程。协议还包括时间戳以记录不同阶段的时间点。NTP认证可选,用于数据安全。
NTP网络时间同步协议详解
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
|
存储 分布式计算 DataWorks
dataworks数据集成
dataworks数据集成
484 2
|
SQL 缓存 关系型数据库
MySQL主从同步如何操作?
随着业务增长,单台MySQL服务器难以应对高并发访问和潜在的故障风险。主从同步(Master-Slave)通过读写分离提升数据库处理能力,具备多项优势:读写分离减轻主数据库压力、支持一主多从增强扩展性与高可用性、以及数据备份确保容灾恢复。MySQL利用binlog实现主从数据同步,记录所有写操作,不包含查询。binlog有三种格式:Statement(基于SQL语句)、Row(基于行更改)、Mixed(结合前两者优点)。主从复制涉及三个关键线程:主库的binlog dump thread和从库的I/O thread与SQL thread。
517 0
MySQL主从同步如何操作?
|
SQL 数据采集 弹性计算
DataWorks产品使用合集之怎么修改生命周期
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。