自学内容网 自学内容网

Sqoop的安装和配置,Sqoop的数据导入导出,MySQL对hdfs数据的操作

sqoop的安装基础是hive和mysql,没有安装好的同学建议去看一看博主的这一篇文章

Hive的部署,远程模式搭建,centos换源,linux上下载mysql。_hive-4.0.1-CSDN博客

好的那么接下来我们开始表演,由于hive是当时在hadoop03上安装的,所以本次的操作,只要没有特别提出就是在hadoop03执行的。

接下来给大家准备好了压缩包,当然也可以自己去官网下载。

------------------

通过网盘分享的文件:sqoop.zip
链接: https://pan.baidu.com/s/1sJInaXbUgUS8alHt_gwqGQ 提取码: d58v 
--来自百度网盘超级会员v4的分享

--------------------------

压缩包是表稳定的Sqoop-1.47版的,有需要其他版本下载的可以去官网下。

看到开头,我们需要做什么!!!

三秒抢答

0!

1!

2!

3!

是的我们需要先启动集群。

首先切换到自己hadoop的sbin目录,以启动集群。

cd /export/servers/hadoop/sbin

然后使用一键启动命令,在三台虚拟机上开始搭建集群。

start-all.sh

启动完成之后,使用jps,看一下自己的进程们显示的全面不全面。

发现叫全面之后,我们切换到hadoop03的虚拟机,输入下面的命令启动hadoop03上面,启动一下我们配置的MetaStore服务。

hive --service metastore

启动完MetaStore服务之后,我们再双击一下hadoop03,开启下一个窗口。

启动HiveServers2

hive --servece hiveserver2

启动完成之后,无需理会他们,开始我们一切顺利,每次都没有报错,一次就可以执行成功的操作。

小小小小建议,可以单独开一个给sql用的窗口。后面就不用反复退出了。

sqoop的安装配置

好的接下来切换到software目录

cd /export/software

切换好了之后,我们输入rz上传一下我们的压缩包

上传完成之后,我们进行一个解压缩

tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /export/servers/

解压缩完成之后,切换到servers目录

cd /export/servers

切换完成之后,我们进行一个重命名

mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

重命名完成之后,我们切换到sqoop目录里

cd sqoop/conf

切换到conf离职后,复制一下环境文件。

cp sqoop-env-template.sh sqoop-env.sh

复制完成之后,我们切换到sqoop-env.sh文件里面,输入

vi sqoop-env.sh

然后输入下面的内容

export HADOOP_COMMON_HOME=/export/servers/hadoop
export HADOOP_MAPRED_HOME=/export/servers/hadoop
export HIVE_HOME=/export/servers/hive

输入完成之后,esc冒号保存退出

那么接下来我们就可以开始开心的配置一下sqoop的环境变量了。

vi /etc/profile

输入

export SQOOP_HOME=/export/servers/sqoop
export PATH=$SQOOP_HOME/bin:$PATH

配置完成之后,还需要输入

source /etc/profile

好的那么接下来我们上传一下jar包,和自己的数据库关联起来。

切换到sqoop的lib目录下

cd /export/servers/sqoop/lib

上传一下mysql的关联jar包

那么也给大家准备好了

-----这里放一张jar包图片---------------------------------

好的上传完成之后,我们再上传一个sqoop的jar包

就是那个lang阿巴阿巴的包,

--------------这里放一张lang包的图片--------------

好的上传并且配置成功之后,我们就可以开始开心测试一下sqoop了

sqoop list-databases --connect jdbc:mysql://localhost:3306/?allowPublicKeyRetrieval=true --username root --password Itcast@2023

执行完成之后,就是下面这个样子

诶!!!!

是不是报错了,是不是说没有hbase

没有关系

cd /export/servers/sqoop/bin

输入

vim configure-sqoop

然后!按esc

:set number

这个是显示行号

之后我们查找一下

/Where to find the main Sqoop jar

后注释掉从

##Moved to be a runtime check in sqoop

# Where to find the main Sqoop jar

之间与HBase、HCatalog 和Accumulo以及Zookeeper相关的内容

我们来到文章的末尾

注释一下

修改完成之后,我们就可以开心的

sqoop list-databases --connect jdbc:mysql://localhost:3306/?allowPublicKeyRetrieval=true --username root --password Itcast@2023

执行命令,连接成功。

sqoop数据的导入

再开始导入之前,

我们需要建立一个sql表,自己创建也行,这个文件在压缩包里也给大家准备好了。

(在物理机上创建完之后上传就可以)

名称:

sqoop_db.sql

下面是文件内容

DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
  `id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  `deg` varchar(100) DEFAULT NULL,
  `salary` int(11) DEFAULT NULL,
  `dept` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO `emp` VALUES ('1201','xiaozhang','manager','50000','TP');
INSERT INTO `emp` VALUES ('1202','xiaosan','Proof reader','50000','TP');
INSERT INTO `emp` VALUES ('1203','xiaosi','php dev','30000','AC');
INSERT INTO `emp` VALUES ('1204','xiaowu','php dev','30000','AC');
INSERT INTO `emp` VALUES ('1205','xiaoer','admin','20000','TP');
DROP TABLE IF EXISTS `emp_add`;
CREATE TABLE `emp_add` (
  `id` int(11) NOT NULL,
  `hno` varchar(100) DEFAULT NULL,
  `street` varchar(100) DEFAULT NULL,
  `city` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO `emp_add` VALUES ('1201','288A','guangminglu','guangzhou');
INSERT INTO `emp_add` VALUES ('1202','108I','chenggonglu','beijing');
INSERT INTO `emp_add` VALUES ('1203','144Z','dadaolu','shenzhen');
INSERT INTO `emp_add` VALUES ('1204','78B','xingfulu','beijing');
INSERT INTO `emp_add` VALUES ('1205','720X','wenxinlu','beijing');
DROP TABLE IF EXISTS `emp_conn`;
CREATE TABLE `emp_conn` (
  `id` int(100) NOT NULL,
  `phno` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO `emp_conn` VALUES ('1201','2356742','11@tp.com');
INSERT INTO `emp_conn` VALUES ('1202','1661663','12@tp.com');
INSERT INTO `emp_conn` VALUES ('1203','8887776','13@ac.com');
INSERT INTO `emp_conn` VALUES ('1204','9988774','14@ac.com');
INSERT INTO `emp_conn` VALUES ('1205','1231231','15@tp.com');

好的那么我们保存一下这个表

切换到data目录

cd /export/data

之后,我们输入rz上传一下我们刚才创建的sql表

上传完成之后,我们登录一下数据库

mysql -uroot -pItcast@2023

(-p后面是大家自己的密码,根据自己的实际情况修改哈)

登陆完成之后,我们创建一个数据库

create database sqoop_db;

创建完成之后选择

use sqoop_db;

之后我们就可以执行一下我们

source /export/data/sqoop_db.sql;

执行完成之后,我们查看一下当前表

show tables;

好的那么我们接下来开启一下mysql的远程访问、

开一下!远程!访问!一定要开!

update mysql.user set Host='%' where User='root';

连接完成之后,记得刷新一下链接,不然下面包失败的。

FLUSH PRIVILEGES;

,得退出数据库

好的么到此为止,接下来我们就可以开始进行下一步了

MySQL导入hdfs
sqoop import \
--connect jdbc:mysql://hadoop03:3306/sqoop_db?allowPublicKeyRetrieval=true \
--username root \
--password Itcast@2023 \
--table emp \
--columns id,name,deg,salary,dept \
--target-dir /sqoop \
--num-mappers 1

执行完上面的代码就可以

执行完成之后,我们就可以打开浏览器来查看一下有么得sqoop文件

出现下面的结果就是操作成功了:

--------------这里放一张浏览器访问成功的照片----------------------

喜欢看浏览器访问的师傅看到这里就可以,那么不喜欢浏览器访问的师傅,同样可以在本地操作

hdfs dfs -cat /sqoop/part-m-00000

查看文件结果。


小tips,小文件用cat查看,大文件用什么查看?

三秒抢答

.

.

.

.

.

对,用more命令查看

好的我们继续


接下来展示下,增量导入

我们再次来到sql数据库

mysql -uroot -p

然后输入密码,输入密码的时候默认是不显示的,不用管,输入就行。

然后我们往sqoop_db里插入一条数据。

insert into sqoop_db.emp values('1206','itcast','java dev','15000','AC');

然后,我们输入下面的命令

sqoop import \
--connect jdbc:mysql://hadoop03:3306/sqoop_db?allowPublicKeyRetrieval=true \
--username root \
--password Itcast@2023 \
--target-dir /sqoop \
--table emp \
--columns id,name,deg,salary,dept \
--num-mappers 1 \
--incremental append \
--check-column id \
--last-value 1205

ok接下来就去hadoop01:9870

查看一下结果文件就ok


MySQL导入hive

接下来的操作是,用sqoop的import命令,把mysql中指定的数据表的数据导入到hive的操作。

因为是hive和mysql的梦幻联动,那么首先我们需要

cp /export/servers/hive/lib/hive-common-4.0.1.jar  /export/servers/sqoop/lib

注意你下载的hive版本不一定是4.0.1哈,建议自己先切换到lib目录,复制一下目录下面的包名。

切换到hive连接一下hive数据库

create database itcast;

创建itcast数据库

好那么接下来,我们就可以开始将mysql中的数据表emp_add导入到hive

sqoop import \
--connect jdbc:mysql://hadoop03:3306/sqoop_db?allowPublicKeyRetrieval=true \
--username root \
--password Itcast@2023 \
--table emp_add \
--columns id,hno,street,city \
--hive-table itcast.emp_add_sqoop \
--create-hive-table \
--hive-import \
--num-mappers 1

第二行是数据库密码,记得换一下自己的密码哈。

这里的小提示,倒数第四行,的那个itcast,是个数据库哈,在hive里创建,如果没有这个数据,就自己创建一个。


之后再上去执行就可以了

ok接下来我们连接一下hive

直接在命令行输入hive

select * from itcast.emp_add_sqoop;

就可以查看emp_add_sqoop数据了。

MySQL过滤导入hdfs,和选择条件差不多

1、where命令

下面我们通过命令

sqoop import \
--connect jdbc:mysql://hadoop03:3306/sqoop_db?allowPublicKeyRetrieval=true \
--username root \
--password Itcast@2023 \
--table emp_add \
--columns id,hno,street,city \
--where "city = 'beijing'" \
--target-dir /sqoop/city_beijing \
--num-mappers 1
​
​

ok接下来我们在本地查看一下

hdfs dfs -cat /sqoop/city_beijing/part-m-00000

就会输出有关北京信息的地址了。

2、query命令

好的那么下一步,我们查找一下mysql在数据表emp的id,name和deg数据,并且过滤字段id<1203的数据。

sqoop import \
--connect jdbc:mysql://hadoop03:3306/sqoop_db?allowPublicKeyRetrieval=true \
--username root \
--password Itcast@2023 \
--target-dir /sqoop/id_1203 \
--query 'select id,name,deg from emp where id > 1203 and $CONDITIONS' \
--num-mappers 1
​

上面的命令执行完成之后,,在本地查看一下

hdfs dfs -cat /sqoop/id_1203/part-m-00000

查看下文件的数据

sqoop数据的导出

首先登录到你的mysql

三秒抢答输入命令

*

*

*

*

*

mysql -uroot -pItcast@2023

输入密码

接下来呢

我们选择sqoop_db数据库

use sqoop_db

Sqoop数据导出-在MySQL创建表emp_export

create table if not exists sqoop_db.emp_export(
    id int(11) not null ,
    name varchar(100) default null,
    deg varchar(100) default null,
    salary int(11) default null,
    dept varchar(10) default null,
    primary key (id)
);

ok然后quit推出数据库

sqoop export \
--connect jdbc:mysql://hadoop03:3306/sqoop_db?allowPublicKeyRetrieval=true  \
--username root \
--password Itcast@2023 \
--columns id,name,deg,salary,dept \
--table emp_export \
--export-dir /sqoop/part-m-00000 \
--num-mappers 1

然后我们再次登录数据库。

select * from sqoop_db.emp_export;

就可以查看表的内容了。

那么本次的教学就到这里,大家如果有什么疑问可以在评论区留言或者私信博主,看到会给大家解释~


原文地址:https://blog.csdn.net/qianwanfuweng/article/details/144109796

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!