使用场景
Haoop文件存储体系(HDFS、Hive、Hbase)与关系型数据库(Mysql)之间的数据导入导出。
Sqoop安装
下载并解压
安装Sqoop的前提是已经具备Java和Hadoop的环境。
1) 最新版下载地址:http
://mirrors
.hust
.edu
.cn
/apache
/sqoop
/
2) 上传安装包sqoop
-1.4.6.bin__hadoop
-2.0.4-alpha
.tar
.gz
3) 解压sqoop安装包到指定目录
tar
-zxf sqoop
-1.4.6.bin__hadoop
-2.0.4-alpha
.tar
.gz
-C
/opt
/module
/
修改配置文件
1) 重命名配置文件
$ cp sqoop
-env
-template
.sh sqoop
-env
.sh
$ cp sqoop
-site
-template
.xml sqoop
-site
.xml
2) 修改配置文件
(sqoop
-env
.sh
)
export HADOOP_COMMON_HOME
=/opt
/module
/hadoop
-2.7.2
export HADOOP_MAPRED_HOME
=/opt
/module
/hadoop
-2.7.2
export HIVE_HOME
=/opt
/module
/apache
-hive
-1.2.2-bin
拷贝JDBC驱动
拷贝jdbc驱动到sqoop的lib目录下,如:
cp mysql
-connector
-java
-5.1.27-bin
.jar
/opt
/module
/sqoop
/1.4.6.bin__hadoop
-2.0.4-alpha
/lib
/
测试Sqoop是否能够成功连接数据库
bin
/sqoop list
-databases
--connect jdbc
:mysql
://hadoop100
:3306/ --username root
--password root
RDBMS到HDFS
全部导入
sqoop
import --connect jdbc
:mysql
://hadoop100
:3306/company
--username root
--password root
--table staff
--target
-dir
/caicai
使用-m而不是用split-by没有发现异常
sqoop
import --connect jdbc
:mysql
://hadoop100
:3306/metastore
--username root
--password root
--table TBLS
--target
-dir
/cai
-m
2
查询导入时,query中带分号报错
提示:must contain
'$CONDITIONS' in WHERE clause
.
提示:
--query选项,不能同时与
--table选项使用
sqoop
import --connect jdbc
:mysql
://hadoop100
:3306/metastore
--username root
--password root
--target
-dir
/czl
--split
-by TBL_ID
--query
'select TBL_ID from TBLS where TBL_ID<100 and $CONDITIONS'
RDBMS到Hive
导入到hive中【目录必须不存在】
sqoop
import --connect jdbc
:mysql
://hadoop100
:3306/metastore
--username root
--password admin
--target
-dir
/user
/hive
/warehouse
/t1
--split
-by TBL_ID
--query
'select TBL_ID from TBLS where TBL_ID<100 and $CONDITIONS'
或者
sqoop
import --connect jdbc
:mysql
://hadoop100
:3306/company
--username root
--password root
--table staff
--hive
-import --hive
-overwrite
--hive
-table staff_hive
HIVE/HDFS到RDBMS
提示:Mysql中如果表不存在,不会自动创建
sqoop export
--connect jdbc
:mysql
://hadoop100
:3306/company
--username root
--password root
--table staff
--num
-mappers
1 --export
-dir
/user
/hive
/warehouse
/staff_hive
--input
-fields
-terminated
-by
"\t"