一、 概念
Sqoop是一种数据迁移工具,可以实现将数据在大数据环境中与RDBMS关系型数据库之间实现数据迁移,之所以可以实现数据迁移是因为底层转换成MR程序实现
二、 安装和使用
1、 安装
1、 解压安装
2、 配置环境变量
3、 修改配置文件
sqoop-env.sh sqoop-site.xml
4、 添加mysql驱动jar包以及与hive进行关联的jar包
2、 使用方式
查看 sqoop help
测试sqoop连接MySQL
sqoop list-datebases --connect jdbc:mysql//node1:3306?serverTimezone=UTC --username root --password root
三、 导入和导出数据
1、 导入数据
-
将mysql表数据导入到hdfs分布式文件存储系统
- 将一张MySQL数据表中的数据导入到hdfs
sqoop import
--connect url
--username root
--password pass
--table table_name
--target-dir hdfs路径
--delete-target-dir
--num-mappers num
--fields-terminated-by "分隔符"
-
- 支持通过查询语句的方式将数据导入hdfs
sqoop import
--connetc url
--username root
--password pass
--query "查询语句(如果查询语句中有where语句,必须在where语句之后加上and $CONDITIONS)"
--target-dir hdfs
--delete-target-dir
--num-mappers num
--fields-terminated-by "分隔符"
where条件最后必须加 and $CONDITIONS 如果查询语句使用双引号包含的,其中$CONDITIONS前面需要加一个\转义字符
- 将MySQL表数据导入到hive数据仓库的数据表中
sqoop import
--connect url
--username root
--password pass
--table table_name
--num-mappers num
--hive-import
--fields-terminated-by "分隔符"
--hive-overwrite
--hive-table 数据库名.数据表名
该语句分为两步执行
1、 先将MySQL表数据导入到hdfs中的user/root路径下
2、 使用Hive的load装载命令将数据装载到hive数据表中
hive中的数据表可以不用提前存在,导入数据的时候hive会先检测数据表是否存在,如果不存在自动创建一个和mysql表类似的一张数据表,然后装载数据
2、 导出数据
sqoop import
--connect url
--username root
--password pass
--table staff
--num-mappers num
--export-dir "HDFS需要导出的文件路径"
--input-fields-terminated-by "分隔符"
注意点:导出时MySQL数据表必须存在
mysql数据表中字段类型要和hive匹配,hive数据表的double类型,集合类型在mysql中一般最好使用字符串类型接收