Sqoop详解

目录

一、sqoop基本原理

1.1、何为Sqoop?

1.2、为什么需要用Sqoop?

1.3、关系图

 1.4、架构图

二、Sqoop可用命令

2.1、公用参数:数据库连接

2.2、公用参数:import

2.3、公用参数:export

 2.4、公用参数:hive

2.3、其他命令

三、Sqoop常用命令

3.1、RDBMS => HDFS (导入重点)

3.1.1、全表导入

3.1.2、查询导入--query

3.1.3、导入指定列 --columns

3.1.4、where语句过滤

3.1.5、①增量导入 append

3.1.5、②增量导入 lastmodified

 3.2、RDBMS => HBase

3.3、RDBMS => Hive

3.3.1、导入普通表

3.3.2、导入分区表

3.4、Hive/Hdfs => RDBMS

3.5、Sqoop Job


一、sqoop基本原理

1.1、何为Sqoop?


Sqoop(SQL-to-Hadoop)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导出到关系型数据库中。


1.2、为什么需要用Sqoop?

我们通常把有价值的数据存储在关系型数据库系统中,以行和列的形式存储数据,以便于用户读取和查询。但是当遇到海量数据时,我们需要把数据提取出来,通过MapReduce对数据进行加工,获得更符合我们需求的数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。为了能够和HDFS系统之外的数据库系统进行数据交互,MapReduce程序需要使用外部API来访问数据,因此我们需要用到Sqoop。
 

1.3、关系图

在这里插入图片描述

 1.4、架构图

 在 mapreduce 中主要是对 inputformat 和 outputformat 进行定制。
Sqoop工具接收到客户端的shell命令或者Java api命令后,通过Sqoop中的任务翻译器(Task Translator)将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数据的拷贝。
 

二、Sqoop可用命令

命令 方法
codegen 生成与数据库记录交互的代码
create-hive-table 将表定义导入到Hive中
eval 评估SQL语句并显示结果
export 导出一个HDFS目录到一个数据库表
help 可用命令列表
import 将一个表从数据库导入到HDFS
import-all-tables 从数据库导入表到HDFS
import-mainframe 从大型机服务器导入数据集到HDFS
job 使用已保存的工作
list-databases 列出服务器上可用的数据库
list-tables 列出数据库中可用的表
merge 合并增量导入的结果
metastore 运行一个独立的Sqoop转移
version 显示版本信息

 对于不同的命令,有不同的参数,这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码,本文目前介绍常用的导入、导出的一些命令。

2.1、公用参数:数据库连接

参数 说明
--connect 连接关系型数据库的URL
--connection-manager 指定要使用的连接管理类
--driver JDBC的driver class
--help 打印帮助信息
--username 连接数据库的用户名
--password 连接数据库的密码
--verbose 在控制台打印出详细信息

2.2、公用参数:import

参数 说明
--enclosed-by 给字段值前后加上指定的字符
--escaped-by 对字段中的双引号加转义符
--fields-terminated-by 设定每个字段是以什么符号作为结束,默认为逗号
--lines-terminated-by 设定每行记录之间的分隔符,默认是\n
--mysql-delimiters Mysql默认的分隔符设置,字段之间以逗号分隔,行之间以\n分隔,默认转义符是\,字段值以单引号包裹。
--optionally-enclosed-by 给带有双引号或单引号的字段值前后加上指定字符。

2.3、公用参数:export

参数 说明
--input-enclosed-by 对字段值前后加上指定字符
--input-escaped-by 对含有转移符的字段做转义处理
--input-fields-terminated-by 字段之间的分隔符
--input-lines-terminated-by 行之间的分隔符
--input-optionally-enclosed-by 给带有双引号或单引号的字段前后加上指定字符

 2.4、公用参数:hive

参数 说明
--hive-delims-replacement 用自定义的字符串替换掉数据中的\r\n和\013 \010等字符
--hive-drop-import-delims 在导入数据到hive时,去掉数据中的\r\n\013\010这样的字符
--map-column-hive < map> 生成hive表时,可以更改生成字段的数据类型
--hive-partition-key 创建分区,后面直接跟分区名,分区字段的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值