一、Sqoop介绍

  • Sqoop是一个用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。

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

二、导入数据 

1.  参数说明

​## 链接MySQL数据库url
--connect jdbc:mysql://127.0.0.1:3306/test_db

## 链接MySQL数据库用户名
--username root

## 链接MySQL数据库密码
--password 123456

## 链接MySQL数据库中的表
--table tb1

## 设置map的个数
--num-mappers 1 

## 设置导入到hdfs文件所在的位置
--target-dir /datas/sqoop/input

## 设置导入到hdfs文件前先删除已经存在的目录
--delete-target-dir 

## 设置导入到hdfs文件的分隔符
--fields-teminated-by ',' 

## 设置增量导入到hdfs上的检查列
--check-column id 

## 设置增量导入到hdfs上的追加方式
--incremental append 

## 设置增量导入到hdfs上的开始位置
--last-value 4

## 设置增量导入到hdfs上的文件存储格式
--as-parquetfile

## 指定hive中的数据库
--hive-database test_db 

## 设置操作类型
--hive-import 

## 指定hive中的表
--hive-table tb1

## 备注:delete-target-dir和incremental append不能同时使用

2.  Sqoop获取MySQL的所有数据库

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

3.  Sqoop从MySQL导入数据到HDFS

sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/test_db \
--username root \
--password 123456 \
--table tb1 \
--num-mappers 1 \
--target-dir /datas/sqoop/input \
--delete-target-dir;

4.  Sqoop从MySQL导入数据到Hive

sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/test \
--username root \
--password 123456 \
--table tb1 \
--num-mappers 1 \
--fields-terminated-by ',' \
--delete-target-dir \
--hive-database test \
--hive-import \ 
--hive-table tb1;

三、导出数据

1.  参数说明

## 链接MySQL数据库url
--connect jdbc:mysql://127.0.0.1:3306/test_db

## 链接MySQL数据库用户名
--username root

## 链接MySQL数据库密码
--password 123456

## 链接MySQL数据库中的表
--table tb1

## 设置map的个数
--num-mappers 1

## 设置hdfs文件导出的分隔符
--fields-terminated-by ','

## 设置hdfs文件所在的位置
--export-dir /user/hive/warehouse/test_db.db/tb1

2.  Sqoop从Hive导出数据到MySQL

sqoop export \
--connect jdbc:mysql://127.0.0.1:3306/test_db \
--username root \
--password 123456 \
--table tb1 \
--num-mappers 1 \
--fields-terminated-by ',' \
--export-dir /user/hive/warehouse/test_db.db/tb1;
Logo

更多推荐