Sqoop数据迁移

一.Sqoop简述

  • Sqoop是一个用于在Hadoop和关系数据库之间传输数据的工具
    1. 将数据从RDBMS导入到HDFS(HDFS、Hive、HBase)

    2. 从HDFS导出数据到RDBMS

    3. 使用MapReduce导入和导出数据,提供并行操作和容错

二.数据导入、导出

MySQL导入数据到HDFS:命令汇总

//插入数据命令import
sqoop import 

//配置连接MySQL中的数据库hr
--connect jdbc:mysql://localhost:3306/hr 
--driver com.mysql.jdbc.Driver

//指定表
--table user 

//(可选)指定where条件
[--where "id>'10'"]

//(可选)query就是导通入过查询语句获取的数据
//如果使用query就不需要--table以及--where
//结尾必须加上\$CONDITIONS,即使没有条件判断也需要where \$CONDITIONS做结尾
//query需要与--split...一起使用
[--query "select * from user where ... and \$CONDITIONS"]

//与query配合使用:指定用于分割数据的列
[--split-by 字段]

//(可选)导入指定列的数据
[--columns "字段,字段,字段,..."]

//配置MySQL用户名
--username root 

//配置MySQL密码
--password hadoop

//(可选)Incremental指定增量导入的模式需要与--chech-column、--last-value一起使用
//增量导入方式为append追加数据至已经存在的HDFS数据集
//append:追加数据记录
//lastmodified:可追加更新的数据
[--incremental append/lastmodified]

//与Incremental配合使用:指定递增的列(建议设为主键)
[--check-column 字段]

//与Incremental配合使用:指定上一次导入的最大值:那么追加数据就会从这个最大值的后面开始增加
[--last-value '值']

//(可选)如果HDFS中的目标目录存在,则删除
[--delete-target-dir]

//设置存储到HDFS中的路径
--target-dir /data/user

//(可选)设定mapper数量
[--m 值]

//(可选)导入时指定文件格式
//不同的版本支持的格式可能会有差异
//格式:textfile(默认)、avrodatafile、sequencefile、parquetfile
[--as-testfile]

MySQL导入数据到Hive:命令汇总

数据导入hive操作需要先将hive/lib下的两个jar包复制到sqoop/lib下
hive-exec-…jar
hive-common-…jar

//插入数据命令import
sqoop import 

//配置连接MySQL中的数据库hr
--connect jdbc:mysql://localhost:3306/hr 
--driver com.mysql.jdbc.Driver

//指定MySQL表
--table user 

//配置MySQL用户名
--username root 

//配置MySQL密码
--password hadoop

//通过hive-import指定导入到Hive
--hive-import

//(可选)指定创建一个新的hive表(如果表已经存在则报错)
//自动创建表,生产中一般不使用
//与--hive-overwrit互斥
[--create-hive-table]

//指定已存在的库
--hive-database 库名

//指定hive表
--hive-table 表名

//(可选)指定分区字段
//sqoop不支持动态分区导入数据至hive中
[--hive-partition-key "分区字段名"]

//与partition-key配合使用:指定分区值
[--hive-partition-value "分区值"]

//覆盖原有表数据
[--hive-overwrite]

//(可选)指定mapper数
[--m 值]

MySQL导入数据到Hbase

//插入数据命令import
sqoop import 

//配置连接MySQL中的数据库hr
--connect jdbc:mysql://localhost:3306/hr 
--driver com.mysql.jdbc.Driver

//指定MySQL表
--table user 

//配置MySQL用户名
--username root 

//配置MySQL密码
--password hadoop

//指定导入数据的列   
--columns "customernum, customername" 
   
//创建hbase表
--hbase-table customercontactinfo 

//指定列簇名    
--column-family CustomerName 
    
//指定rowkey对应的字段
//对应的字段必须select或colums中列出来
--hbase-row-key customernum
   
//指定mapper数量
-m 1

导出HDFS数据到MySQL

需要提前在在MySQL中创建表

//导出数据命令export
sqoop export 

//配置连接MySQL数据库指定的库
--connect jdbc:mysql://localhost:3306/库名

//配置MySQL用户名
--username 用户名

//配置MySQL密码
--password 密码 

//指定导至MySQL中的表
--table 表名

//指定HDFS数据路径
--export-dir /数据路径 

//指定一下分隔符(默认^A,对应的值为001)
--input fields-terminated-by '\001'

//设置mapper数量
-m 值

创建Sqoop Job

sqoop job \
//-- import中间有个空格否则报错
--create Job名 -- import \
--connect jdbc:mysql://192.168.**.**:3306/库名 \
--....
--m 3

//调用Job
sqoop job --exec Job名
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值