Sqoop 数据迁移

news2024/9/23 15:27:12

Sqoop 数据迁移

  • 一、Sqoop 概述
  • 二、Sqoop 优势
  • 三、Sqoop 的架构与工作机制
  • 四、Sqoop Import 流程
  • 五、Sqoop Export 流程
  • 六、Sqoop 安装部署
    • 6.1 下载解压
    • 6.2 修改 Sqoop 配置文件
    • 6.3 配置 Sqoop 环境变量
    • 6.4 添加 MySQL 驱动包
    • 6.5 测试运行 Sqoop
      • 6.5.1 查看Sqoop命令语法
      • 6.5.2 测试数据库连接
  • 七、案例实践:Sqoop 迁移Hive出库数据
    • 7.1 数据导出:Hive 导入 MySQL
    • 7.2 数据导出:MySQL 导入 Hive

一、Sqoop 概述

Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS与Hadoop之间进行高效的大数据迁移。用户可以在Sqoop的帮助下,轻松地将RDBMS中的数据导入到Hadoop或者与其相关的系统(如HBase和Hive)中;同时也可以将数据从Hadoop系统导出到RDBMS。因此,可以说Sqoop就是一个桥梁,连接了RDBMS与Hadoop。

在这里插入图片描述

二、Sqoop 优势

  • Sqoop可以高效地、可控地利用资源,可以通过调整任务数来控制任务的并发度。另外它还可以配置数据库的访问时间。

  • Sqoop可以自动地完成数据库与Hadoop系统中数据类型的映射与转换,

  • Sqoop支持多种数据库,比如,MySQL、0racle和PostgreSQL等数据库。

三、Sqoop 的架构与工作机制

客户端提交脚本,调用Map Task ,将关系数据库导入到 Hadoop 平台的HDFS/HBase/Hive,同时也可以将 Hadoop 平台的HDFS/HBase/Hive数据通过 Map Task 导入到 关系数据库中。
在这里插入图片描述

四、Sqoop Import 流程

在这里插入图片描述

五、Sqoop Export 流程

在这里插入图片描述

六、Sqoop 安装部署

6.1 下载解压

下载地址:https://archive.apache.org/dist/sqoop/

上传到 /usr/local/,进行解压

[root@hadoop1 local]# tar -zxvf /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 

创建软连接

[root@hadoop1 local]# ln -s sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

在这里插入图片描述

6.2 修改 Sqoop 配置文件

进入 Sqoop 的 conf 目录下修改 sqoop-env.sh 配置文件,修改内容如下:

将配置模板拷贝一份,命名为 sqoop-env.sh

[root@hadoop1 conf]# cp /usr/local/sqoop/conf/sqoop-env-template.sh /usr/local/sqoop/conf/sqoop-env.sh

编辑 sqoop-env.sh

export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export ZOOCFGDIR=/usr/local/zookeeper

6.3 配置 Sqoop 环境变量

添加 Sqoop 的环境变量,添加内容如下:

[root@hadoop1 conf]# vim /etc/profile

添加如下内容:

# 添加 Sqoop 环境变量
SQOOP_HOME=/usr/local/sqoop
PATH=$SQOOP_HOME/bin:$PATH
export SQOOP_HOME PATH

更新环境

[root@hadoop1 conf]# source /etc/profile

6.4 添加 MySQL 驱动包

将对应的 MySQL 驱动包上传到 /usr/local/sqoop/lib 目录下
在这里插入图片描述

6.5 测试运行 Sqoop

6.5.1 查看Sqoop命令语法

在Sqoop安装目录下,使用help命令查看Sqoop的基本用法,具体操作如下:

[root@hadoop1 sqoop]# /usr/local/sqoop/bin/sqoop help

在这里插入图片描述

6.5.2 测试数据库连接

[root@hadoop1 bin]# /usr/local/sqoop/bin/sqoop list-databases --connect jdbc:mysql://192.168.220.151 --username hive --password hive

在这里插入图片描述

七、案例实践:Sqoop 迁移Hive出库数据

7.1 数据导出:Hive 导入 MySQL

  • 准备 Hive 数据源
create table mean_temperature as select id, sum(temperature)/count(*) from temperature group by id;

在这里插入图片描述

  • MySQL 建表
CREATE TABLE IF NOT EXISTS `mean_temperature`(
`id` VARCHAR(20) NOT NULL,
`average` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述

  • hive数据导出到 mysql 脚本
/usr/local/sqoop/bin/sqoop export \
--connect 'jdbc:mysql://hadoop1/hive?useUnicode=true&characterEncoding=utf-8' \
--username hive \
--password hive \
--table mean_temperature \
--export-dir /user/hive/warehouse/mydb/mean_temperature \
--input-fields-terminated-by "\001" \
-m 1;

出现如下报错:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ‘hive’@‘%’ to database ‘hive’
在这里插入图片描述
hive 用户只授权了 hadoop1 能够访问mysql,需求开启远程访问
修复方法:登录 root 用户,执行如下脚本

mysql> grant all on *.* to 'hive'@'%' identified by 'hive';
mysql> flush privileges;

再次执行如下脚本:

/usr/local/sqoop/bin/sqoop export \
--connect 'jdbc:mysql://hadoop1/hive?useUnicode=true&characterEncoding=utf-8' \
--username hive \
--password hive \
--table mean_temperature \
--export-dir /user/hive/warehouse/mydb/mean_temperature \
--input-fields-terminated-by "\001" \
-m 1;

在这里插入图片描述
在 mysql 查看 mean_temperature 表
在这里插入图片描述

7.2 数据导出:MySQL 导入 Hive

执行如下脚本:

/usr/local/sqoop/bin/sqoop import \
--connect 'jdbc:mysql://hadoop1/hive?useUnicode=true&characterEncoding=utf-8' \
--username hive \
--password hive \
--table mean_temperature \
--fields-terminated-by ',' \
--delete-target-dir \
-m 1 \
--hive-import \
--hive-database weather \
--hive-table ods_mean_temperature;

在这里插入图片描述
查看 Hive 数据库的 ods_mean_temperature

hive> select * from ods_mean_temperature limit 10;

在这里插入图片描述
可以看到 自动创建表 ods_mean_temperature 并有数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven与Gradle差异

作为Java 开发者,你平时用 Maven 还是 Gradle? 我一直用的都是 Maven,但是前几天做了一个小项目,用的是 Gradle,因工作需要就去了解了Gradle的相关信息。 直到看到 Spring 和 Spring Boot 都从 Maven 切换到 Gradle了…

鸿蒙界面开发——组件(4):图标小符号 (SymbolGlyph/SymbolSpan) 气泡提示Popup

SymbolGlyph 创建图标 SymbolGlyph通过引用Resource资源来创建,资源引用类型可以通过$r创建Resource类型对象。不支持子组件。 SymbolGlyph(value?: Resource)SymbolGlyph($r(sys.symbol.ohos_folder_badge_plus)).fontSize(96).renderingStrategy(SymbolRenderi…

【GD32】---- 使用GD32调试串口并实现printf打印输出

1 复制工程模板 直接复制工程模板里的系统文件和固件库文件到新的工程文件01_USART_Printf 2 新建keil工程 参考上一篇博文:【GD32】---- 移植工程模板及点灯测试 3 编写代码 3.1 创建USART文件 创建一个USART.c文件,放于05_UserDriver文件夹中 …

macOS安装Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本,注意这里我们要下载的是Java8,对应的JDK1.8 需要登陆Oracle,没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…

关于edge浏览器登陆CSDN安全验证不跳出验证码

前言 也就是最近这几天才出现这个问题,以前用edge浏览器登陆csdn时即使需要安全验证也能正常弹出验证码,现在根本没反应。 正文 我用edge浏览器登陆时,显示如下界面,就卡住不动了。 起初我以为是我浏览器可能设置了拦截的问题…

数据分析利器:Java与MySQL构建强大的数据挖掘系统

数据分析在当今信息时代具有重要的作用,它可以帮助企业和组织深入理解数据,发现隐藏在数据中的模式和规律,并基于这些洞察进行决策和优化。Java与MySQL作为两个强大的工具,结合起来可以构建出一个高效、可靠且功能丰富的数据挖掘系…

《中文Python穿云箭量化平台二次开发技术09》设计一个可视化股票池量化平台项目用于实现选股和自动交易

《中文Python穿云箭量化平台》是纯Python开发的量化平台,因此其中很多Python模块,我们可以自己设计新的量化工具,例如自己新的行情软件、新的量化平台、以及各种量化研究工具。 穿云箭自带指标公式源码运行模块,可以为其他量化平台…

ROS/ROS2版本和Gazebo版本

简洁版本: ROS Noetic Gazebo 11 (ubuntu 20.04)ROS Jazzy Gazebo Harmonic (ubuntu 24.04) 其他版本搭配也可以学习和研究但是成本过高。 如何贯穿从ROS kinetic到ROS Jazzy的教程。 如何实现旧新的平滑过度。 …

python常用库学习-Matplotlib使用

文章目录 安装 Matplotlib导入库基本示例1. 绘制简单的线图2. 散点图3. 柱状图4. 直方图5. 子图 更多高级功能1. 自定义样式2. 文本和注释3. 保存图形 示例:使用 Matplotlib 绘制多个图表示例 1: 绘制多个线图示例 2: 绘制散点图和直方图 参考文献 Matplotlib 是 Py…

【QT】VS2020+QT插件 CMake项目开发踩坑记录

背景 我使用的是VS2022, 安装了QT的两个插件,并且使用CMake进行工程管理。 当然如果你想通过VS开发qt,第一步是安装QT(我目前安装了最新的6.7版本) 然后才是安装VS中的QT插件。 这篇文章,主要记录&#x…

Navicat出了免费版本

官方下载地址 Navicat出了一款免费版本Navicat Premium Lite,相比正常版本阉割了很多功能,最让人无奈的是没有美化sql功能。 可以满足我们的日常需求,提供了基础的功能:创建连接、连接分组、管理表、管理数据、导入导出数据。还…

台球助教APP小程序的前端交互设计

在当今移动互联网时代,台球助教APP小程序作为一种便捷的学习工具,正在成为越来越多台球爱好者的首选。作为设计人员,在开发台球助教APP小程序时,我们的目标是创造一个既美观又实用的应用程序,让用户在使用过程中感到舒…

VS编译环境中printf() scanf()等文件操作函数不安全编译报错的解决方法

如题,在使用诸如printf() scanf() fopen()等函数时会出现如下图这样不安全的错误 解决方法: 在程序的前面添加此预编译指令 #pragma warning(disable:4996) 添加后即可编译通过。

基于vue框架的超市管理系统yqogz(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,商品分类,商品信息,员工,进货信息 开题报告内容 基于Vue框架的超市管理系统开题报告 一、研究背景与意义 随着信息技术的飞速发展和零售行业的数字化转型,超市作为传统零售业的重要组成部分,面临着提升管…

「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究

「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究 文章目录 「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究前言介绍UIResponderUIGestureRecognizerUIControl 正文UIGestur…

都9月了,说好的系统规划与管理师改版教程呢?

今天距离2024年下半年的系统规划与管理师考试,还有66天的时间,六六大顺! 差不多是一个月之前,系统规划与管理师的改版消息被刷屏了,刷屏的原因是系统规划与管理师改版的消息,据说新版大纲和教材已经完成备案…

每日OJ_牛客_五子棋(判断是否有赢)

目录 牛客_五子棋(判断是否有赢) 解析代码 牛客_五子棋(判断是否有赢) 五子棋__牛客网 题目: 用例输入: .................... .................... .................... .................... ....…

Nginx: 模块化管理编译安装与配置结构

Nginx 模块化管理机制 Nginx 是一个高性能web和反向代理服务器,尤其是在激烈的Web服务器竞争领域中能够依然保持很好的这个发展势头,并且在现在的众多企业中得到一个广泛的应用,这一切其实跟Nginx架构设计是分不开的 另外高度模块化的设计也…

计算机毕业设计 二手闲置交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

影石相机tf内存卡数据格式化后恢复方法

在数字化时代,‌相机成为了我们记录生活、‌捕捉瞬间的重要设备。‌影石相机,‌以其出色的性能和便捷的操作,‌赢得了众多摄影爱好者的青睐。‌然而,‌在使用过程中,‌我们可能会遇到一些意外情况,‌如不小…