行业资讯 2025年08月6日
0 收藏 0 点赞 861 浏览 3625 个字
摘要 :

文章目录 一、下载Sqoop 二、安装与配置Sqoop 三、导入导出案例 一、下载Sqoop 1)Sqoop官网:点击访问官网 2)下载地址:Sqoop1.4.7版本下载 这里我们选择目前最新版1……




一、下载Sqoop

1)Sqoop官网:点击访问官网
2)下载地址:Sqoop1.4.7版本下载
这里我们选择目前最新版1.4.7版本下载
Sqoop的安装与配置以及导入导出实例

二、安装与配置Sqoop

1)我们将下好的sqoop上传到master主机的/usr/sqoop目录下(没有就新建),然后执行解压,由于原目录太长需要重命名下目录:

//解压
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
//重命名
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop-1.4.7

2)配置SQOOP_HOME

vi /etc/profile
//新增
export SQOOP_HOME=/usr/sqoop/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin
//生效
source /etc/profile

3)配置Sqoop的conf目录下核心配置文件sqoop-env.sh

//复制template模板
cp sqoop-env-template.sh sqoop-env.sh

编辑sqoop-env.sh,我们目前只放开HADOOP_COMMON_HOMEHADOOP_MAPRED_HOME的配置(如果你需要其他的也可以配置下),完整配置如下:

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/hadoop/hadoop-3.2.1

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/hadoop/hadoop-3.2.1

#set the path to where bin/hbase is available
#export HBASE_HOME=

#Set the path to where bin/hive is available
#export HIVE_HOME=

#Set the path for where zookeper config dir is
#export ZOOCFGDIR=

4)由于Sqoop要用到JDBC链接库,因此我们需要把MYSQL驱动复制到Sqoop的lib目录中,否则会报错。由于我在windows上安装的mysql是8.0版本的,所以导入8.0版本的驱动包。

如果你是其他数据库,则需要导入其他数据的驱动,另外注意驱动和数据库的版本匹配关系

三、导入导出案例

1、导入案例:MYSQL导入HDFS

1)启动本地MYSQL服务,新建一个名为sqooptest的数据库,然后新建一个user表,并插入几条记录:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `age` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '小明', '10');
INSERT INTO `user` VALUES ('2', '小李', '15');
INSERT INTO `user` VALUES ('3', '小张', '20');
INSERT INTO `user` VALUES ('4', 'jack', '8');
INSERT INTO `user` VALUES ('5', 'peter', '30');

2)在sqoop-1.4.7conf目录下新建conf1文件,其内容如下:

import
--connect
jdbc:mysql://10.10.11.211:3306/sqooptest?useSSL=false&serverTimezone=UTC
--username
root
--password
123456
--table
user
--columns
id,name,age
--where
id>0
--target-dir
hdfs://master:9820/sqoop
--delete-target-dir
-m
1
--as-textfile

注意:如果出现中文乱码问题,需要再connect连接后面加上编码设置,具体如下:

jdbc:mysql://10.10.11.211:3306/sqooptest?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

前面多行的配置含义大家一看便知,后面的几行:
a)--target-dir:指定导入HDFS的位置
b)--delete-target-dir:若目标目录存在,则删除
c)最后1行表示导入数据以文本格式存放在HDFS上
d)另外,sqoop的导入时候,默认导入后的文件的分割符为’ , ‘
如果想要指定分割符需要使用--fields-terminated-by \"\\t\",代表以\"\\t\"(tab)作为导入后文件的分隔符。
3)启动hadoop,执行sqoop

sqoop --options-file /usr/sqoop/sqoop-1.4.7/conf/conf1

我们发现会警告如下(可忽略):

Warning: /usr/sqoop/sqoop-1.4.7/../accumulo does not exist

参考解决:

解决Sqoop运行Warning: /usr/sqoop/sqoop-1.4.7/../accumulo does not exist

我们在搭建Sqoop之后开始运行迁移数据,可能会发现如下报错: Warning: /usr/sqoop/sqo […]

解决后再次执行,发现还是有错:

Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

参考解决:

运行Sqoop报错解决: java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

运行Sqoop是我们发现如下报错: Exception in thread "main" […]

我们再次执行,发现仍然有错,报错如下:

Error executing statement: java.sql.SQLException: null, message from server: “Host ‘Midlight’ is not allowed to connect to this MySQL server”

参考解决:

运行Sqoop报错解决:message from server: “Host ‘Midlight’ is not allowed to connect to this MySQL server”

运行sqoop报错如下: 2021-05-18 10:03:22,120 ERROR manager.SqlM […]

最后,我们再去执行,发现成功运行。
4)查看HDFS中结果如下:

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

Sqoop的安装与配置以及导入导出实例

2、导出案例:HDFS导出至MYSQL

1)基于上个案例,先删除上个案例中的user表记录
2)在conf目录下新建conf2配置文件,如下:

export
--connect
jdbc:mysql://10.10.11.211:3306/sqooptest?useSSL=false&serverTimezone=UTC
--username
root
--password
123456
--table
user
--columns
id,name,age
--export-dir
hdfs://master:9820/sqoop
-m
1

3)执行如下指令:

sqoop --options-file /usr/sqoop/sqoop-1.4.7/conf/conf2

4)执行完后查看user表,发现数据都进来了

最后,大家可以自行研究:

1)如何导入MYSQL查询结果至HDFS
2)如何实现将MYSQL数据导入HIVE

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8038.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

985
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

463
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

347
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

455
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

515
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

831
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号