背景信息

SQOOP支持直接从Hive表到RDBMS表的导出操作,也支持HDFS到RDBMS表的操作,

当前需求是从Hive中导出数据到RDBMS,有如下两种方案:

Ø  从Hive表到RDBMS表的直接导出:

该种方式效率较高,但是此时相当于直接在Hive表与RDBMS表的数据之间做全量、增量和更新对比,当Hive表记录较大时,或者RDBMS有多个分区表时,无法做精细的控制,因此暂时不考虑该方案。

Ø  从HDFS到RDBMS表的导出:

该方式下需要先将数据从Hive表导出到HDFS,再从HDFS将数据导入到RDBMS。虽然比直接导出多了一步操作,但是可以实现对数据的更精准的操作,特别是在从Hive表导出到HDFS时,可以进一步对数据进行字段筛选、字段加工、数据过滤操作,从而使得HDFS上的数据更“接近”或等于将来实际要导入RDBMS表的数据。在从HDFS导入RDBMS时,也是将一个“小数据集”与目标表中的数据做对比,会提高导出速度。示意图如下所示:

不同导出模式介绍

全量导出

Ø  应用场景:将Hive表中的全部记录(可以是全部字段也可以部分字段)导出到目标表。

Ø  实现逻辑:

Ø  使用限制:目标表中不能有与Hive中相同的记录,一般只有当目标表为空表时才使用该模式进行首次数据导出。

Ø  参数:源表、目标表、导出字段(select的字段)、映射关系(--column后的参数)

Ø  适用的数据库:Oracle、DB2、SQL Server、PG、MySQL

增量导出

Ø  应用场景:将Hive表中的增量记录以及有修改的记录同步到目标表中。

Ø  实现逻辑:

Ø  使用限制:update-key可以是多个字段,但这些字段的记录都应该是未被更新过的,若该参数指定的字段有更新,则对应记录的更新不会被同步到目标表中。

Ø  参数:源表、目标表、筛选字段及其取值范围、导出字段(select的字段)、映射关系(--column后的参数)、更新的参考字段(--update-key后的参数)

Ø  适用的数据库:Oracle、SQL Server、MySQL

更新导出

Ø  应用场景:将Hive表中的有更新的记录同步到目标表。

Ø  实现逻辑:

Ø  使用限制:update-key可以是多个字段,但这些字段的记录都应该是未被更新过的,若该参数指定的字段有更新,则对应记录的更新不会被同步到目标表中。

Ø  参数:源表、目标表、筛选字段及其取值范围、导出字段(select的字段)、映射关系(--column后的参数)、更新的参考字段(--update-key后的参数)

Ø  适用的数据库:Oracle、DB2、SQL Server、PG、MySQL

相关脚本

全量导出
HQL示例:insert overwrite  directory ‘/user/root/export/test’ row format delimited fields terminated by ‘,’ STORED AS textfile select F1,F2,F3 from <sourceHiveTable>;SQOOP脚本:sqoop export --connect jdbc:mysql://localhost:3306/wht --username root --password cloudera --table <targetTable> --fields-terminated-by ','  --columns F1,F2,F3 --export-dir /user/root/export/test增量导出(insert模式)
HQL示例:insert overwrite  directory ‘/user/root/export/test’ row format delimited fields terminated by ‘,’ STORED AS textfile select F1,F2,F3 from <sourceHiveTable> where <condition>;SQOOP脚本:sqoop export --connect jdbc:mysql://localhost:3306/wht --username root --password cloudera --table <targetTable> --fields-terminated-by ‘,’  --columns F1,F2,F3 --update-key F4 --update-mode  allowinsert --export-dir /user/root/export/test更新导出(update模式)
HQL示例:insert overwrite  directory ‘/user/root/export/test’ row format delimited fields terminated by ‘,’ STORED AS textfile select F1,F2,F3 from <sourceHiveTable> where <condition>;SQOOP脚本:sqoop export --connect jdbc:mysql://localhost:3306/wht --username root --password cloudera --table <targetTable> --fields-terminated-by ‘,’  --columns F1,F2,F3 --update-key F4 --update-mode  updateonly --export-dir /user/root/export/test

Sqoop导出模式——全量、增量insert、更新update的介绍以及脚本示例相关推荐

  1. mysqldump备份(全量+增量)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景: 每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备 ...

  2. MySQL数据库之全量+增量+二进制日志的备份与恢复

    一.简介数据的备份与恢复 1.为什么备份? 灾难恢复:人为错误.硬件故障(冗余).软件故障(bug).自然灾害.黑客攻击.误操作.-: 测试: 2.备份时应该注意些什么? 能容忍最多丢失多少数据: 恢 ...

  3. mysqldump全量恢复_【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

  4. “全量增量” 与 “增量同步” 一文了解清楚【建议收藏】

    大家在同步数据的时候都会接触到2个名词,"全量增量" 与 "增量同步" ,名字都长得差不多,但是意思和操作却不一样:比如部门领导给你方案,那我们要如何去选择其中 ...

  5. java从hbase增量导出到,Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  6. solr mysql增量导入_10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)

    1.创建MySQL数据 create databasesolr;usesolr;DROP TABLE IF EXISTSstudent;CREATE TABLEstudent ( idchar(10) ...

  7. 331全量增量数据、同步ld

    -- 数据同步 1 全量数据同步 1.1 不带参数的实现方式 每次更新目标表的时候,先把目标表中的数据清空,然后用源表的数据插入目标表中 . 1.2 通过参数 ,会计期(一个会计期 = 1个月 ,格式 ...

  8. mongodb监听oplog 全量+增量同步

    一.前言 前一个项目中,涉及到了一次数据迁移,这次迁移需要从mongodb迁移到另一个mongodb实例上,两个源的数据结构是不一样的.涉及到增量和全量数据迁移,整体迁移数据量在5亿左右.本篇即讲理论 ...

  9. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

最新文章

  1. NVIDIA A100 GPUs上硬件JPEG解码器和NVIDIA nvJPEG库
  2. 交易所频频被盗,你该如何保护自己的数字资产?
  3. 多语言切换jquery.i18n.min.js
  4. 40岁“老程序员”的“辛酸”自述:
  5. 数字效率Evernote超效率数字笔记术
  6. clamav Java_ClamAV安装使用及API例子
  7. 点击button后改变文字_27. 教你零基础搭建小程序:小程序的常见组件—button
  8. python 基础 列表生成式
  9. 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)
  10. 记住没:永远不要在 MySQL 中使用 UTF-8
  11. 【P2P网络】BitTorrent协议中文版4
  12. 进销存系统软件怎么测试,进销存系统中的报表测试
  13. Javaweb项目各个模块的用途
  14. 【Jmeter+ant+Jenkins自动化持续集成】
  15. 大学生职业生涯规划书性格特征_大学生职业生涯规划书自我分析
  16. snownlp对天猫商品评论数据进行情感分析(附源码)
  17. 电脑计算机简单密码设置方法,电脑开机密码怎么设置,开机密码设置很简单!
  18. 【秃头系列】-【本科生毕设论文格式Word】自动生成目录并调整目录
  19. kali虚拟机连接网络设置/解决ping网站时域名解析错误/解决子网ip和子网掩码不一致
  20. 英文和数字手写数据集

热门文章

  1. 如何用产品经理的思维设计移动报表
  2. tensorflow sigmoid 如何计算训练数据的正确率_“来自蒙娜丽莎的凝视”— 结合 TensorFlow.js 和深度学习实现...
  3. arm-linux启动,linux启动流程arm
  4. python网络爬虫学习笔记(十一):Ajax数据爬取
  5. 2019 蓝桥杯省赛 B 组模拟赛(一) 程序设计:后缀字符串 ( STL map 和 substr()函数的应用)
  6. C++STL常用简洁版
  7. 深度学习——Optimizer算法学习笔记
  8. 给你出道题---如何蒙题
  9. [转]java selenium webdriver实战 应用小结
  10. js中的forEach