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

devtools/2024/11/29 18:49:04/

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;

就可以查看表的内容了。

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


http://www.ppmy.cn/devtools/137989.html

相关文章

Android so库的编译

在没弄明白so库编译的关系前,直接看网上博主的博文,常常会觉得云里雾里的,为什么一会儿通过Android工程cmake编译,一会儿又通过NDK命令去编译。两者编译的so库有什么区别? android版第三方库编译总体思路: 对于新手小白来说搞明白上面的总体思路图很有必…

PAT甲级 1056 Mice and Rice(25)

文章目录 题目题目大意基本思路AC代码总结 题目 原题链接 题目大意 给定参赛的老鼠数量为NP&#xff0c;每NG只老鼠分为一组&#xff0c;组中最胖的老鼠获胜&#xff0c;并进入下一轮&#xff0c;所有在本回合中失败的老鼠排名都相同&#xff0c;获胜的老鼠继续每NG只一组&am…

学习HTML第三十三天

学习文章目录 一.fieldset 与 legend 的使用&#xff08;了解&#xff09;二.表单总结三.框架标签 一.fieldset 与 legend 的使用&#xff08;了解&#xff09; fieldset 可以为表单控件分组、 legend 标签是分组的标题 二.表单总结 form表单&#xff1a; action 属性&#…

Spring Boot【四】

单例bean中使用多例bean 1.lookup-method方式实现 当serviceB中调用getServiceA的时候&#xff0c;系统自动将这个方法拦截&#xff0c;然后去spring容器中查找对应的serviceA对象然后返回 2.replaced-method&#xff1a;方法替换 我们可以对serviceB这个bean中的getServiceA…

泷羽sec-linux进阶

基础之linux进阶 声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽…

软件/游戏提示:mfc42u.dll没有被指定在windows上运行如何解决?多种有效解决方法汇总分享

遇到“mfc42u.dll 没有被指定在 Windows 上运行”的错误提示&#xff0c;通常是因为系统缺少必要的运行库文件或文件损坏。以下是多种有效的解决方法&#xff0c;可以帮助你解决这个问题&#xff1a; 原因分析 出现这个错误的原因是Windows无法找到或加载MFC42u.dll文件。这可…

【jvm】什么是动态编译

目录 1. 说明2. 实现方式3. 应用场景 1. 说明 1.在Java中&#xff0c;动态编译指的是在程序运行时动态地编译Java源代码&#xff0c;生成字节码&#xff0c;并加载到JVM&#xff08;Java虚拟机&#xff09;中执行。2.动态编译是在程序运行时&#xff0c;根据需要编译Java源代码…

【Spring源码核心篇-04】spring中refresh刷新机制的流程和实现

Spring源码核心篇整体栏目 内容链接地址【一】Spring的bean的生命周期https://zhenghuisheng.blog.csdn.net/article/details/143441012【二】深入理解spring的依赖注入和属性填充https://zhenghuisheng.blog.csdn.net/article/details/143854482【三】精通spring的aop的底层原…