sqoop介绍及数据迁移

1、sqoop概述

在上次的博客中,我们已经装好了sqoop,并且运行成功了,若是,有同学不清楚安装流程,请参考博客:sqoop安装及配置
那么sqoop到底是什么呢,作用是什么,我们现在就来看一看:

  • Sqoop是一个用于在Hadoop和关系数据库之间传输数据的工具
    • 将数据从RDBMS导入到HDFS
      • HDFS、Hive、HBase
    • 从HDFS导出数据到RDBMS
    • 使用MapReduce导入和导出数据,提供并行操作和容错
  • 目标用户
    • 系统管理员、数据库管理员
    • 大数据分析师、大数据开发工程师等

从这里我们就可以看出来,sqoop的作用就是用于hadoop和关系数据库之间传输数据的工具。

2、sqoop常用命令

我们可以通过sqoop help的命令来查看sqoop的常用命令:

Available commands: 
codegen 				Generate code to interact with database records 
create-hive-table 		Import a table definition into Hive 
eval					Evaluate a SQL statement and display the results 
export 					Export an HDFS directory to a database table 
help 					List available commands 
import 					Import a table from a database to HDFS 
import-all-tables 		Import tables from a database to HDFS 
import-mainframe 		Import datasets from a mainframe server to HDFS 
job 					Work with saved jobs
list-databases 			List available databases on a server 
list-tables 			List available tables in a database 
merge 					Merge results of incremental imports 
metastore 				Run a standalone Sqoop metastore 
version 				Display version information

3、sqoop数据迁移

3.1从RDB导入数据到HDFS

  • 导入表到HDFS
# \表示换行输出,注意前面有'空格'
sqoop-import \
--connect jdbc:mysql://hadoop100:3306/hive \
--driver com.mysql.jdbc.Driver \
--table DBS \
--username root \
--password ok \
--target-dir /data/dbs/ \
--m 3							#指定mapper数量,默认为4个
  • 通过Where语句过滤导入表
sqoop-import \
--connect jdbc:mysql://hadoop100:3306/hive \
--driver com.mysql.jdbc.Driver \
--table DBS \
--where "条件" \			#指定where条件
--username root \
--password ok \
--delete-target-dir \		#如果目标目录存在,则删除
--target-dir /data/dbs/ \
--m 3
  • 通过COLUMNS过滤导入表
sqoop-import \
--connect jdbc:mysql://hadoop100:3306/hive \
--driver com.mysql.jdbc.Driver \
--table DBS \
--columns "列名,..." \		#指定列
--where "" \				#指定条件
--username root \
--password ok \
--delete-target-dir \
--target-dir /data/dbs/ \
--m 3
  • 使用query方式导入数据
sqoop-import \
--connect jdbc:mysql://hadoop100:3306/hive \
--driver com.mysql.jdbc.Driver \
#直接在query语句中指定table
#必须带上条件 '\$CONDITIONS'
--query "select * from DBS where '条件' and \$CONDITIONS"
--username root \
--password ok \
--delete-target-dir \
--target-dir /data/dbs/ \
--m 3
  • 使用Sqoop增量导入数据
    • Incremental指定增量导入的模式
      • append:追加数据记录
      • lastmodified:可追加更新的数据
sqoop-import \
--connect jdbc:mysql://hadoop100:3306/student \
--table student --where "sid>6" \
--username root --password ok \
--incremental append \			#增量导入的方式为append,追加数据
--check-column sid \			#指定递增的列
--last-value 6 \				#指定上一次导入的最大值
--target-dir /data/stu/ \
--m 3
  • 导入文件格式
    • 导入时指定文件格式参数
      • –as-textfile 导入数据为text文件(默认)
      • –as-avrodatafile 导入数据为avro文件
      • –as-sequencefile 导入数据为sequence文件
      • –as-parquetfile 导入数据为parquet文件

3.2从RDB导入数据到Hive

  • jar包导入
    • 从hive的lib目录复制到sqoop的libmulu
      hive-common
      hive-exec
  • 直接导入数据到Hive
    • –create-hive-table:自动创建表,生产中一般不使用
    • –hive-overwrite:覆盖原有表数据
sqoop-import --connect jdbc:mysql://hadoop100:3306/student \
--table student --username root -password ok \
#通过hive-import指定导入到Hive
--hive-import \					
#指定创建一个新的hive表
#若表已存在,则删除这句,在末尾用--hive-overwrite覆盖
--hive-create-table  \		
#指定hive的库名和创建的表名	
--hive-database sqooptest \
--hive-table student \
--m 1
  • 导入数据到Hive分区
sqoop import --connect jdbc:mysql://localhost:3306/student \
--query “select order_id, order_status from orders where order_date = ‘2014-07-24’  and \$CONDITIONS” \
--username root   --password ok \
--target-dir /data/orders \
--split-by order_status \
--hive-import \
--hive-table sqooptest.orders \
--hive-partition-key “date”  \			#指定分区字段
--hive-partition-value “20140724” \		#指定分区值
--m 3

3.3从RDB导入数据到HBase

  • 导入MySQL数据到HBase
sqoop-import \
--connect jdbc:mysql://hadoop100:3306/student \
--username root --password ok --table products \
--columns "product_name,product_price" \
--hbase-create-table \
--hbase-table product \
--column-family prod \
--hbase-row-key product_id \
--m 1

3.4、导出HDFS数据到MySQL

  • 使用sqoop export导出数据到MySQL
  • 在 MySQL 中创建表
  • 导出数据到 MySQL
sqoop export \
--connect jdbc:mysql://hadoop:3306/student \
--username root \
--password ok \
--table emp \
--export-dir /data/stu \
--m 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值