Hadoop Sqoop介绍

一 Sqoop
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,PostgreSQL等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
对于某些NoSQL数据库它也提供了连接器。Sqoop,类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
Sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。
核心的功能有两个:导入、迁入;导出、迁出
导入数据:MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统
导出数据:从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等 Sqoop 的本质还是一个命令行工具,和 HDFS,Hive 相比,并没有什么高深的理论。

Sqoop:本质就是迁移数据, 迁移的方式:就是把sqoop的迁移命令转换成MR程序
Hive:本质就是执行计算,依赖于HDFS存储数据,把SQL转换成MR程序
二 Sqoop工作机制
Sqoop将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制。

三 演示案例
3.1查询mysql中的数据库

sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306 --username root --password 123456

3.2 导入操作
3.2.1 Sqoop导入数据到HDFS中

sqoop-import --append --connect 'jdbc:mysql://192.168.154.134:3306/mmzs' --username 'root' --password '123456' --query 'select * from mmzs.testsqoop where uid>3 and $CONDITIONS' -m 1 --target-dir '/user/hive/warehouse/mmzs.db/testsqoop' --fields-terminated-by '	' --lines-terminated-by '
'

3.2.2 条件导入
1、query, where子句必须有$CONDITIONS(固定写法)

sqoop-import  
--connect jdbc:mysql://haoguan-HP-Compaq-Pro-6380-MT:3306/testdb  
--username root  
--password 123456  
--query 'select id,account from from user where account="ddd" and $CONDITIONS'  
--target-dir /user/haoguan/sqoop/import/user_parquet  
--delete-target-dir  
--fields-terminated-by '	'  
--num-mappers 1  
--as-parquetfile

2、columns指定导入的字段(–columns account,password字段之间不能有空格)

sqoop-import  
--connect jdbc:mysql://127.0.0.1:3306/testdb  
--username root  
-P  
--table user  
--columns account,password  
--target-dir /sqoop/import/user_column  
--delete-target-dir  
--fields-terminated-by '	'  
--num-mappers 1  
--direct 

3、包含where子句

sqoop-import  
--connect jdbc:mysql://109.123.121.104:3306/testdb  
--username root  
--password 123456  
--table user  
--where 'id > 5 and account like "f%"'  
--target-dir /sqoop/import/user_where  
--delete-target-dir  
--fields-terminated-by '	'  
-m 1  
--direct 

3.3 导出操作
3.3.1 导出数据到MySql

sqoop-export  
--connect jdbc:mysql://127.0.0.1:3306/testdb  
--username root  
--password 123456  
--table user_from_hive  
--export-dir /sqoop/import/user  
--input-fields-terminated-by '	'  
-m 1

常用参数
–connect jdbc 连接地址
–connection-manager 连接管理者
–driver 驱动类
–hadoop-mapred-home

$HADOOP_MAPRED_HOME
–help help 信息
-P 从命令行输入密码
–password 密码
–username 账号
–verbose 打印流程信息
–connection-param-file 可选参数
-m是指定map任务的个数

资料整理与引用
1、https://baike.baidu.com/item/sqoop/5033853
2、https://www.cnblogs.com/qingyunzong/p/8807252.html
3、https://www.cnblogs.com/guanhao/p/5621330.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值