sqoop安装部署

sqoop安装部署

安装sqoop的前提是已经具备Java和Hadoop环境。

下载地址:https://www.apache.org/dyn/closer.lua/sqoop/

这里用的是:sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

1. sqoop的安装及配置

(1) 上传安装包sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz到虚拟机中

(2) 进入上传的安装包目录,解压sqoop安装包到指定目录,如:

tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/module/

解压后,进入解压后的目录把名字修改为sqoop

mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

2. 设置sqoop环境变量

命令:

vi /root/.bash_profile

加入下面内容:

export SQOOP_HOME=/opt/module/sqoop
export PATH=$PATH:$SQOOP_HOME/bin

使设置立即生效:

source /root/.bash_profile

3. 修改配置文件

Sqoop的配置文件与大多数大数据框架类似,在sqoop根目录下的conf目录中。

进入sqoop下面的conf

命令:

cd /opt/module/sqoop/conf

(1) 重命名配置文件sqoop-env-template.sh

mv sqoop-env-template.sh sqoop-env.sh

(2) 修改配置文件 sqoop-env.sh

命令:

vi sqoop-env.sh

修改一下内容:

export HADOOP_COMMON_HOME=/opt/module/hadoop		//Hadoop安装目录
export HADOOP_MAPRED_HOME=/opt/module/hadoop		//Hadoop安装目录
export HIVE_HOME=/opt/module/hive					//hive安装目录
export ZOOKEEPER_HOME=/opt/module/zookeeper			//zookeeper安装目录
export ZOOCFGDIR=/opt/module/zookeeper				//zookeeper安装目录

4. 拷贝JDBC驱动

上传jdbc驱动到/opt/software目录中。

进入存放jdbc驱动的目录下,拷贝jdbc驱动到sqoop的lib目录下

cp mysql-connector-java-5.1.37.jar /opt/module/sqoop/lib/

5. 验证Sqoop

进入sqoop安装目录,我们可以通过某一个command来验证sqoop配置是否正确:

bin/sqoop help

6. 测试Sqoop是否能够成功连接数据库

进入sqoop安装目录,执行

bin/sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password 111111

出现如下输出:

image-20210515190047359

7. 通过sqoop将hive中的数据传输到MySQL数据库

7.1 hive中建表

(1)先在hive中创建表,数据类型和MySQL中的数据类型相对应

hive> create table student
    > (id varchar(50),name varchar(50),age int,school varchar(50),class varchar(50)) 
    > row format delimited fields terminated by ',';

如图所示:

image-20210516222605168

(2)准备数据,数据格式要和表结构相对应

在student.txt文件中加入以内容:

19308001,zhangsan,20,111111,222222
19308002,lisi,21,333333,444444
19308003,wangwu,20,555555,666666
19308004,liliu,20,777777,888888
19308005,zhangfei,21,999999,111111

注:以什么为分隔符,就用什么符号,这里使用的是逗号为分隔符

然后上传到/opt/software上

(3)将txt文件数据导入到hive中

load data local inpath '/opt/software/student.txt' into table student;
# inpath里面是存放txt文件的路径

(4)查看表中数据

hive> select * from student;

如图所示:

image-20210516223257669

7.2 MySQL中建表

登录MySQL

mysql -uroot -p

(1)创建一个数据库

mysql> create database hive;

(2)使用hive数据库

mysql> use hive;

(3)数据库中创建表

mysql> create table student (id varchar(50),name varchar(50),age int,school varchar(50),class varchar(50));

如图所示:

image-20210516223615607

(4)添加一条数据

mysql> insert into student values('19308009','wangmazi','22','666666','777777');

如图所示:

image-20210516223816114

7.3 sqoop将hive中的数据传输到MySQL中

进入/opt/module/sqoop/bin目录中执行命令

[root@master bin]# sqoop export --connect jdbc:mysql://master:3306/hive --username root --password 111111 --table student --num-mappers 1 --export-dir /user/hive/warehouse/student --input-fields-terminated-by ','

//说明
//master:3306/hive    						hive是指MySQL中的数据库
--export-dir /user/hive/warehouse/student 	导出数据的目录
--input-fields-terminated-by ',' 			导出数据时,使用什么分隔符分割字段
--table student 							导出到 MySQL 的哪张表

hive创建的表在hdfs上面的位置为:/user/hive/warehouse/student

如图所示:

image-20210516225209329

成功后进入MySQL数据库中查询数据

如图所示:

image-20210516224146825
posted @ 2021-11-09 12:02  Paranoïa  阅读(1151)  评论(0)    收藏  举报