Sqoop导出模式——全量、增量insert、更新update的介绍以及脚本示例
背景信息
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的介绍以及脚本示例相关推荐
- mysqldump备份(全量+增量)
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景: 每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备 ...
- MySQL数据库之全量+增量+二进制日志的备份与恢复
一.简介数据的备份与恢复 1.为什么备份? 灾难恢复:人为错误.硬件故障(冗余).软件故障(bug).自然灾害.黑客攻击.误操作.-: 测试: 2.备份时应该注意些什么? 能容忍最多丢失多少数据: 恢 ...
- mysqldump全量恢复_【MySQL】全量+增量的备份/恢复
生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...
- “全量增量” 与 “增量同步” 一文了解清楚【建议收藏】
大家在同步数据的时候都会接触到2个名词,"全量增量" 与 "增量同步" ,名字都长得差不多,但是意思和操作却不一样:比如部门领导给你方案,那我们要如何去选择其中 ...
- java从hbase增量导出到,Hbase实用技巧:全量+增量数据的迁移方法
摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...
- solr mysql增量导入_10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)
1.创建MySQL数据 create databasesolr;usesolr;DROP TABLE IF EXISTSstudent;CREATE TABLEstudent ( idchar(10) ...
- 331全量增量数据、同步ld
-- 数据同步 1 全量数据同步 1.1 不带参数的实现方式 每次更新目标表的时候,先把目标表中的数据清空,然后用源表的数据插入目标表中 . 1.2 通过参数 ,会计期(一个会计期 = 1个月 ,格式 ...
- mongodb监听oplog 全量+增量同步
一.前言 前一个项目中,涉及到了一次数据迁移,这次迁移需要从mongodb迁移到另一个mongodb实例上,两个源的数据结构是不一样的.涉及到增量和全量数据迁移,整体迁移数据量在5亿左右.本篇即讲理论 ...
- hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法
摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...
最新文章
- NVIDIA A100 GPUs上硬件JPEG解码器和NVIDIA nvJPEG库
- 交易所频频被盗,你该如何保护自己的数字资产?
- 多语言切换jquery.i18n.min.js
- 40岁“老程序员”的“辛酸”自述:
- 数字效率Evernote超效率数字笔记术
- clamav Java_ClamAV安装使用及API例子
- 点击button后改变文字_27. 教你零基础搭建小程序:小程序的常见组件—button
- python 基础 列表生成式
- 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)
- 记住没:永远不要在 MySQL 中使用 UTF-8
- 【P2P网络】BitTorrent协议中文版4
- 进销存系统软件怎么测试,进销存系统中的报表测试
- Javaweb项目各个模块的用途
- 【Jmeter+ant+Jenkins自动化持续集成】
- 大学生职业生涯规划书性格特征_大学生职业生涯规划书自我分析
- snownlp对天猫商品评论数据进行情感分析(附源码)
- 电脑计算机简单密码设置方法,电脑开机密码怎么设置,开机密码设置很简单!
- 【秃头系列】-【本科生毕设论文格式Word】自动生成目录并调整目录
- kali虚拟机连接网络设置/解决ping网站时域名解析错误/解决子网ip和子网掩码不一致
- 英文和数字手写数据集
热门文章
- 如何用产品经理的思维设计移动报表
- tensorflow sigmoid 如何计算训练数据的正确率_“来自蒙娜丽莎的凝视”— 结合 TensorFlow.js 和深度学习实现...
- arm-linux启动,linux启动流程arm
- python网络爬虫学习笔记(十一):Ajax数据爬取
- 2019 蓝桥杯省赛 B 组模拟赛(一) 程序设计:后缀字符串 ( STL map 和 substr()函数的应用)
- C++STL常用简洁版
- 深度学习——Optimizer算法学习笔记
- 给你出道题---如何蒙题
- [转]java selenium webdriver实战 应用小结
- js中的forEach