一、安装Sqoop
1、下载并解压
wget -c http://ftp.riken.jp/net/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /usr/local
2、将解压后生成的文件夹重命名
mv ./sqoop-1.4.7.bin__hadoop-2.6.0 ./sqoop
3、配置环境变量并使生效
export SQOOP_HOME=/usr/local/sqoop
export PATH=¥PATH:$SQOOP_HOME/bin
4、 重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
添加以下内容:
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
5、将mysql的驱动包mysql-connector-java-5.1.27-bin.jar复制到Sqoop安装目录下的lib文件夹中
6、测试是否安装成功
sqoop list-databases --connect jdbc:mysql://master:3306/test --username hive --password 123456
参数说明:
–connect: 数据库的连接URL
–username: 数据库用户名
–password:数据库密码
二、将mysql表数据导入到hdfs中
1、在mysql创建数据库test和数据表student
其中主键是字段id,字段name是字符串类型
# 创建数据库test:
create database test;
# 使用数据库test:
use test
# 创建数据表student:
create table student(id int primary key,name varchar(20));
# 向数据表student插入两条数据:
insert into student values(1,"aa");
insert into student values(2,"bb");
2、启动Hadoop
start-all.sh
3、执行命令
bin/sqoop import --connect "jdbc:mysql://master:3306/test?characterEncoding=UTF-8" --username hive --password 123456 --table student --columns id,name --target-dir /sqoop/mysql4
上面代码中的参数含义
–connect: 数据库的连接URL
–username: 数据库用户名
–password:数据库密码
–table:数据库表名
–columns:数据库列名
-target-dir: 数据库hdfs中存放目录,如果hdfds中没有该目录则会自动生成
输出的日志如下:
如果出现以下情况,就试着修改mysql的表字符集编码改成:utf-8,重新执行
4、查看导入结果
hadoop fs -ls /sqoop/mysql4
查看/sqoop/mysql4/目录下所有文件的内容
hadoop fs -cat /sqoop/mysql4/*
三、将hdfs中的数据导入到mysql中
1、在test数据库中创建和表student 一样的student2表
create table student2(id int primary key,name varchar(20));
2、执行导出命令
bin/sqoop export --connect "jdbc:mysql://master:3306/test?characterEncoding=UTF-8" --username hive --password 123456 --table student2 --export-dir /sqoop/mysql4/part-m-00000
上面代码中的参数含义
–table:目标数据所在表的名称
–export-dir:源数据所在的位置
3、在mysql里查看表student2
select * from student2;
结果:
四、解决错误
1、将mysql的驱动包mysql-connector-java-5.1.27-bin.jar复制到Sqoop安装目录下的lib文件夹中