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

embedded/2024/12/26 19:55:30/

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/embedded/141855.html

相关文章

git clone超大仓库时报错:fatal: early EOF

环境版本&#xff1a; 系统&#xff1a;Ubuntu git版本&#xff1a;version 2.43.0 在执行git clone命令时报错&#xff0c;信息如下&#xff1a; 系统&#xff1a;Win10 git版本&#xff1a;version 2.47.0 解决办法1&#xff1a; 1、关闭压缩&#xff1a; git conf…

SNMPv3 项目实例

为了支持 更多的 SNMP 功能,例如 安全性、复杂的 MIB 结构 和 增强的功能,我们需要对现有的代理和客户端进行扩展和改进。下面我会详细介绍如何在 SNMP 项目中实现以下功能: 支持 SNMPv3 安全性:SNMPv3 提供了认证和加密功能,保证数据传输的安全性。支持复杂的 MIB 结构:…

Android通过摄像头检测心率

话不多说&#xff0c;先看效果 Android通过摄像头测量心率 借鉴文章如下 Android通过摄像头计算心率、心率变异性 该文章的核心功能点已经很全了&#xff0c;为了方便使用&#xff0c;我这边整理成了工具类可直接使用 该功能全网文章还是比较少的&#xff0c;还是要感谢下借鉴…

springboot331“有光”摄影分享网站系统pf(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; “有光”摄影分享网站设计与实现 摘 要 自互联网的发展至今&#xff0c;其基础理论与技术都已完善&#xff0c;并积极参与了整个社会各个领域。它容许信息根据媒体传播&#xff0c;并和信息可视化工具一起为大家提供优质的服务。对于…

android集成FFmpeg步骤以及常用命令,踩坑经历

1、入坑第一步&#xff1a;首先集成的库必须正确。最好是有ndk的&#xff0c;FFmpeg有许多个版本&#xff0c;我才开始接触的时候随便选了一个&#xff0c;一般的 方法没有问题。但是涉及到需要使用libx264等条件进行编码时&#xff0c;老是报错&#xff0c;网上搜索资料也没有…

uniapp开发支付宝小程序自定义tabbar样式异常

解决方案&#xff1a; 这个问题应该是支付宝基础库的问题&#xff0c;除了依赖于官方更新之外&#xff0c;开发者可以利用《自定义 tabBar》曲线救国 也就是创建一个空内容的自定义tabBar&#xff0c;这样即使 tabBar 被渲染出来&#xff0c;但从视觉上也不会有问题 1.官方文…

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…

人脸识别API解锁智能生活、C++人脸识别接口软文

在这个数字化转型的时代&#xff0c;科技正以前所未有的速度改变着我们的生活方式。其中&#xff0c;人脸识别技术作为人工智能领域的一项重要突破&#xff0c;已经逐渐渗透到我们生活的方方面面。翔云为广大有需求的用户提供了人脸识别接口解决方案&#xff0c;助力各行各业快…