当前位置: 首页 > news >正文

Sqoop 数据迁移

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 并有数据。

相关文章:

Sqoop 数据迁移

Sqoop 数据迁移 一、Sqoop 概述二、Sqoop 优势三、Sqoop 的架构与工作机制四、Sqoop Import 流程五、Sqoop Export 流程六、Sqoop 安装部署6.1 下载解压6.2 修改 Sqoop 配置文件6.3 配置 Sqoop 环境变量6.4 添加 MySQL 驱动包6.5 测试运行 Sqoop6.5.1 查看Sqoop命令语法6.5.2 测…...

【数据结构】排序算法系列——希尔排序(附源码+图解)

希尔排序 算法思想 希尔排序(Shell Sort)是一种改进的插入排序算法,希尔排序的创造者Donald Shell想出了这个极具创造力的改进。其时间复杂度取决于步长序列(gap)的选择。我们在插入排序中,会发现是对整体…...

c++(继承、模板进阶)

一、模板进阶 1、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中…...

【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱

1. 引言 随着技术的飞速发展,人工智能(AI)已从学术研究的实验室走向现实应用的舞台,成为推动现代社会变革的核心动力之一。而在这一进程中,深度学习(Deep Learning)因其在大规模数据处理和复杂问题求解中的卓越表现,迅速崛起为人工智能的最前沿技术。深度学习的核心是…...

WebLogic 笔记汇总

WebLogic 笔记汇总 一、weblogic安装 1、创建用户和用户组 groupadd weblogicuseradd -g weblogic weblogic # 添加用户,并用-g参数来制定 web用户组passwd weblogic # passwd命令修改密码# 在文件末尾增加以下内容 cat >>/etc/security/limits.conf<<EOF web…...

leetcode:2710. 移除字符串中的尾随零(python3解法)

难度&#xff1a;简单 给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾…...

Python GUI入门详解-学习篇

一、简介 GUI就是图形用户界面的意思&#xff0c;在Python中使用PyQt可以快速搭建自己的应用&#xff0c;自己的程序看上去就会更加高大上。 有时候使用 python 做自动化运维操作&#xff0c;开发一个简单的应用程序非常方便。程序写好&#xff0c;每次都要通过命令行运行 pyt…...

QT5实现https的post请求(QNetworkAccessManager、QNetworkRequest和QNetworkReply)

QT5实现https的post请求 前言一、一定要有sslErrors处理1、问题经过2、代码示例 二、要利用抓包工具1、问题经过2、wireshark的使用3、利用wireshark查看服务器地址4、利用wireshark查看自己构建的请求报文 三、返回数据只能读一次1、问题描述2、部分代码 总结 前言 QNetworkA…...

vscode 使用git bash,路径分隔符缺少问题

window使用bash --login -i 使用bash时候&#xff0c;在系统自带的terminal里面进入&#xff0c;测试conda可以正常输出&#xff0c;但是在vscode里面输入conda发现有问题 bash: C:\Users\marswennaconda3\Scripts: No such file or directory实际路径应该要为 C:\Users\mars…...

F12抓包10:UI自动化 - Elements(元素)定位页面元素

​课程大纲 1、前端基础 1.1 元素 元素是构成HTML文档的基本组成部分之一&#xff0c;定义了文档的结构和内容&#xff0c;比如段落、标题、链接等。 元素大致分为3种&#xff1a;基本结构、自闭合元素&#xff08;self-closing element&#xff09;、嵌套元素。 1、基本结构&…...

android 删除系统原有的debug.keystore,系统运行的时候,重新生成新的debug.keystore,来完成App的运行。

1、先上一个图&#xff1a;这个是keystore无效的原因 之前在安装这个旧版本android studio的时候呢&#xff0c;安装过一版最新的android studio&#xff0c;然后通过模拟器跑过测试的demo。 2、运行旧的项目到模拟器的时候&#xff0c;就报错了&#xff1a; Execution failed…...

SQL入门题

作者SQL入门小白&#xff0c;此栏仅是记录一些解题过程 1、题目 用户访问表users&#xff0c;记录了用户id&#xff08;usr_id&#xff09;和访问日期&#xff08;log_date&#xff09;,求出连续3天以上访问的用户id。 2、解答过程 2.1数据准备 通过navicat创建数据&#xf…...

Python实战:实战练习案例汇总

Python实战&#xff1a;实战练习案例汇总 **Python世界系列****Python实践系列****Python语音处理系列** 本文逆序更新&#xff0c;汇总实践练习案例。 Python世界系列 Python世界&#xff1a;力扣题43大数相乘算法实践Python世界&#xff1a;求解满足某完全平方关系的整数实…...

zabbix之钉钉告警

钉钉告警设置 我们可以将同一个运維组的人员加入到同一个钉钉工作群中&#xff0c;当有异常出现后&#xff0c;Zabbix 将告警信息发送到钉钉的群里面&#xff0c;此时&#xff0c;群内所有的运维人员都能在第一时间看到这则告警详细。 Zabbix 监控系统默认没有开箱即用…...

《OpenCV计算机视觉》—— 对图片进行旋转的两种方法

文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下&#xff1a; import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…...

Python 错误 ValueError 解析,实际错误实例详解 (一)

文章目录 前言Python 中错误 ValueError: No JSON object Could Be Decoded在 Python 中解码 JSON 对象将 JSON 字符串解码为 Python 对象将 Python 对象编码为 JSON 字符串Python 中错误 ValueError: Unsupported Pickle Protocol: 3Python 中的 Pickling 和 UnpicklingPython…...

[java][git]上传本地代码及更新代码到GitHub教程

上传本地代码及更新代码到GitHub教程 上传本地代码 第一步&#xff1a;去github上创建自己的Repository&#xff0c;创建页面如下图所示&#xff1a; 红框为新建的仓库的https地址 第二步&#xff1a; echo "# Test" >> README.md 第三步&#xff1a;建立g…...

react antd table expandable defaultExpandAllRows 不生效问题

原因&#xff1a;defaultExpandAllRows只会在第一次渲染时触发 解决方案&#xff1a;渲染前判断table 的datasource 数据是否已准备好 {pageList.length > 0 ? (<TablerowSelection{rowSelection}columns{columns}dataSource{pageList}style{{ marginTop: 24 }}pagina…...

什么是领域驱动设计?

什么是领域驱动设计&#xff1f; 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称DDD&#xff09;是一种面向对象的软件开发方法&#xff0c;它强调将软件系统的设计和实现过程与业务领域紧密结合&#xff0c;通过深入理解和建模业务领域&#xff0c;从而实现高…...

信息安全工程师(1)计算机网络分类

一、按分布范围分类 广域网&#xff08;WAN&#xff09;&#xff1a; 定义&#xff1a;广域网的任务是提供长距离通信&#xff0c;运送主机所发送的数据。其覆盖范围通常是直径为几十千米到几千千米的区域&#xff0c;因此也被称为远程网。特点&#xff1a;连接广域网的各个结点…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...