1. 创建mysql表,并创建初始化数据

grant all privileges on *.* to 'root'@'%' identified by 'xxxxxxxxx' with grant option;
flush privileges;use test;drop table if exists sqoop_test;
create table sqoop_test (id bigint auto_increment primary key,name varchar(20),last_mod TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);select * from sqoop_test st;insert into sqoop_test(name) values ('name1');
insert into sqoop_test(name) values ('name2');
insert into sqoop_test(name) values ('name3');insert into sqoop_test(name) values ('name4');
insert into sqoop_test(name) values ('name5');
insert into sqoop_test(name) values ('name6');
insert into sqoop_test(name) values ('name7');select * from sqoop_test st;

2. 全量导入表数据脚本

/usr/hdp/current/sqoop-client/bin/sqoop import -m 2 --connect jdbc:mysql://ip:3306/test \
--username root --password xxxxxxxxx \
--table sqoop_test \
--mapreduce-job-name 'testSqoop_mapreduce-job-name' \
--target-dir /tzqtoto_45/sqoop_test_tmp \
--delete-target-dir \
--hive-overwrite \
--hive-database tzqtoto_45 \
--hive-table sqoop_test \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-drop-import-delims \
--lines-terminated-by '\n' \
--input-fields-terminated-by '\001' \
--fields-terminated-by '\001';

3. 以lastmodified和append的方式直接导入数据到hdfs

sqoop import \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
-m 1  \
--target-dir /tzqtoto_45/hiveWarehouse/sqoop_test \
--incremental lastmodified \
--check-column last_mod \
--merge-key id \
--last-value "2020-12-24 14:34:53" \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-drop-import-delims \
--lines-terminated-by '\n' \
--input-fields-terminated-by ',' \
--fields-terminated-by ',';sqoop import \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
-m 1  \
--target-dir /tzqtoto_45/hiveWarehouse/sqoop_test1 \
--incremental append \
--check-column id \
--last-value 0 \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-drop-import-delims \
--lines-terminated-by '\n' \
--input-fields-terminated-by ',' \
--fields-terminated-by ',';

4. 以append导入数据

sqoop create-hive-table \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
--hive-database tzqtoto_45 \
--hive-table sqoop_test;sqoop import -m 1 \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
--hive-import \
--hive-database tzqtoto_45 \
--hive-table sqoop_test \
--incremental append \
--check-column id \
--last-value 0;

5. append模式下check-column为时间字段的情况下(功能类似lastmodified)

sqoop create-hive-table \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
--hive-database tzqtoto_45 \
--hive-table sqoop_test;# 下面的方式不管append方式如何,加了--hive-overwrite之后,历史数据都会被更新,即全量更新,并且会覆盖历史数据。
# 加了--hive-overwrite后,在mysql库中数据不变的情况下,多次执行时最后数据都不变。
# 未加--hive-overwrite时,在mysql库中数据不变的情况下,每次都会增加--last-value '2020-12-24 18:53:10'后面的数据。执行多遍的时候,数据会错误。
sqoop import -m 1 \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
--hive-import \
--hive-overwrite \
--hive-database tzqtoto_45 \
--hive-table sqoop_test \
--incremental append \
--check-column last_mod \
--merge-key id \
--last-value '2020-12-24 18:53:10';## 此种,mysql中历史数据变化了之后(说的是删除情况下),不会删除hive中的数据,只会每次增加--last-value '2020-12-24 19:02:09';后的数据。
sqoop import -m 1 \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
--hive-import \
--hive-database tzqtoto_45 \
--hive-table sqoop_test \
--incremental append \
--check-column last_mod \
--merge-key id \
--last-value '2020-12-24 19:02:09';

lastmofied通过外部表的方式导入数据

–check-column和–merge-key相同的时候,会替换掉已存在的数据。

DROP TABLE IF EXISTS sqoop_test;
CREATE EXTERNAL TABLE `sqoop_test`(
`id` bigint,
`name` string,
`last_mod` TIMESTAMP
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'hdfs://tqHadoopCluster/toto_2/hiveWarehouse/sqoop_test';sqoop import -m 1 \
--connect jdbc:mysql://ip:3306/test \
--username root \
--password xxxxxxxxx \
--table sqoop_test \
--target-dir /toto_2/hiveWarehouse/sqoop_test \
--columns "id,name,last_mod" \
--map-column-java "id=Long,name=String,last_mod=java.sql.Timestamp" \
--map-column-hive "id=BIGINT,name=STRING,last_mod=TIMESTAMP" \
--incremental lastmodified \
--check-column last_mod \
--merge-key id \
--last-value "2019-12-25 09:23:10" \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-drop-import-delims \
--lines-terminated-by '\n' \
--input-fields-terminated-by ',' \
--fields-terminated-by ',';

如果–merge-key id和–check-column last_mod字段都没有变化,name变化之后,更新最新的数据,此种情况下会覆盖掉历史的该条记录的数据。

注意:
1、数据库中删除记录之后,不会同步的删除外部表中的此条记录。
2、外部表的时候,注意指定分割符为’,’ ,否则导入的数据将会是带有NULL值的
3、外部表的时候,也要指定列和列的类型。

Ambari2.7.4+HDP3.1.4下sqoop增量导入只支持append模式,mysql直接进入hive的lastmodified的不支持。下面是增量的命令。相关推荐

  1. sqoop 增量导入,不重复

    在实际的生产环境下,我们常常是要继续数据增量的导入 核心参数 –check-column 用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳 ...

  2. 3.2.3 Sqoop 数据迁移工具, 导入数据import, MySQL到HDFS/Hive, 导出数据export,增量数据导入, Sqoop job,常用命令及参数

    目录 数据迁移工具 -- Sqoop 第一部分 Sqoop概述 第二部分 安装配置 第三部分 应用案例 第 1 节 导入数据import MySQL 到 HDFS MySQL 到 Hive 第 2 节 ...

  3. 大数据平台Ambari2.7.4+HDP3.1.4安装(超详细教程)

    大数据平台Ambari2.7.4+HDP3.1.4安装(超详细教程) Ambari2.7.4+HDP3.1.4是最后一个免费版本,新版本需要授权. 因工作需要,安装大数据集群,了解到Ambari属于A ...

  4. CentOS7.3 内网环境安装Ambari2.7.4+HDP3.1.4(阿里云服务器)

    目录 一.基本环境 准备 1.1.系统环境说明 1.2.基本配置 1.主机名映射的修改 2.关闭防火墙 3. 关闭SELINUX 4.关闭Linux的THP服务 5. SSH免密登录 6.时钟同步 7 ...

  5. Ambari-2.7.5整合HDP-3.1.5集群完整安装记录(内附安Ambari-2.7.5 + HDP-3.1.5安装包下载地址)

    Ambari-2.7.5 + HDP-3.1.5安装包下载方式: 关注微信公众号:浮世Talk,回复ambari即可获取 介绍 Ambari是Apache软件基金会中顶级项目,由Ambari Serv ...

  6. ambari-2.7.3 + HDP-3.1.0安装步骤

    目录 1.关闭防火墙 2.配置/etc/hosts文件 3.时间同步 4.免密登录 5.安装jdk 6.安装httpd并配置本地源 7.mysql 8.启动ambari-server的配置程序(主节点 ...

  7. 基于ARM64银河麒麟V10系统(PK体系)适配安装Ambari2.7.3+HDP3.1

    引言 目前市场上主流的大数据平台以CDH和HDP两种为主,而两种大数据平台都是基于Apache原生态版本改进的,HDP版本的更贴近于原生态版本,开源率100%,基本上支持所有的开源大数据组件.CDH版 ...

  8. hive sqoop 分区导入_Sqoop概述及shell操作

    特别说明:该专栏文章均来源自微信公众号<大数据实战演练>,欢迎关注! 一.Sqoop概述 1. 产生背景 基于传统关系型数据库的稳定性,还是有很多企业将数据存储在关系型数据库中:早期由于工 ...

  9. Sqoop(四)增量导入、全量导入、减量导入

    本文转自:https://www.cnblogs.com/yfb918/p/10858355.html 增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数 ...

最新文章

  1. 控制显示隐藏_大众发动机控制单元隐藏功能刷写
  2. Python包管理工具Distribute的安装
  3. RASPBERRY PI PICO 开发板 基础测试
  4. (视频+图文)机器学习入门系列-第15章
  5. SIFT算法原理(不带公式)
  6. 软RAID-mdadm折腾小记
  7. python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法
  8. DBCP连接池配置常用参数说明
  9. Packet Tracer实验——使用三层交换机实现vlan间的通信(详解)
  10. 基于python的图像分割并计数
  11. 杂谈异常处理try-catch-finally
  12. Java Web提交任务到Spark Spark通过Java Web提交任务
  13. 社会工程学之《反欺骗的艺术》的思考
  14. 关于华为和荣耀手机升级鸿蒙系统之后无法连接magicbook多屏协同的问题
  15. [玩转北京] 北京最值得你一看的博物馆大全
  16. 计算机linux二级试题,浙江省计算机等级考试二级考试试题库
  17. 关于小米安装app的问题
  18. windows11如何退回windows10,手把手,突然觉得我不适合win11
  19. 软考是什么-有什么用-怎么报名-考试内容
  20. python中break和continue区别_Python break和continue用法及区别

热门文章

  1. Python下tornado实现webSocket实现
  2. 电气期刊论文实现:考虑斜坡约束、开停机时间约束的电力机组组合(程序讲解)
  3. 【Python】while循环实现用户登录的三次机会
  4. JavaScript实现使用二元运算符将两个数字相加fullAdder算法(附完整源码)
  5. OpenCASCADE:物理STEP文件
  6. wxWidgets:wxHtml 测试示例
  7. wxWidgets:TextFrame 类的完整实现
  8. wxWidgets:wxRichTextFieldTypeStandard类用法
  9. wxWidgets:wxCursor类用法
  10. boost::mp11::mp_sort相关用法的测试程序