hive使用sqoop与oracle传输数据

news2024/12/22 23:53:23

下载地址

http://archive.apache.org/dist/sqoop

两个版本sqoop1(1.4.x)和sqoop2(1.99.x),两种不同的架构。

本文使用sqoop1。

sqoop是apache旗下一款“hadoop与关系数据库之间传送数据”的工具。

导入数据:从MySQL、Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等存储系统。

导出数据:从Hadoop的HDFS、HIVE中导出数据到关系数据库mysql等。

sqoop的工作机制是将导入导出命令翻译成mapreduce程序来实现。翻译出的mapreduce中主要是对inputformat、outputformat进行定制。安装时,hive位于哪台服务器,sqoop就安装部署在哪台服务器。

本文测试连接时使用的是mysql,导入导出时使用的oracle数据库,两者的区别就是添加各自相应的jdbc驱动,其余保持一致。

下载上传

以root用户登录服务器,将文件上传至/opt

安装配置

解压

以root用户登录服务器,解压

tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

重命名

配置文件

修改配置文件,进入sqoop-1.4.7/conf目录

cp sqoop-env-template.sh sqoop-env.sh

修改sqoop-env.sh文件,vi sqoop-env.sh,添加以下内容

export HADOOP_COMMON_HOME=/opt/hadoop

export HADOOP_MAPRED_HOME=/opt/hadoop

export HIVE_HOME=/opt/hive

添加驱动

将mysql的驱动包和hive的执行包,放入sqoop的lib中

cp /opt/hive/lib/mysql-connector-java-5.1.49-bin.jar /opt/sqoop-1.4.7/lib/

cp /opt/hive/lib/hive-exec-3.1.3.jar /opt/sqoop-1.4.7/lib/

cp /opt/hive/hcatalog/share/hcatalog/hive-hcatalog-core-3.1.3.jar /opt/sqoop-1.4.7/lib/

环境变量

以root用户登录,配置环境变量

vi /root/.profile,添加以下内容

export SQOOP_HOME=/opt/sqoop-1.4.7

export PATH=:$SQOOP_HOME/bin:$PATH

# HCatalog

export HCAT_HOME=/opt/hive/hcatalog

export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-3.1.3.jar

保存推出后,执行 source .profile,以使之生效。

测试连接

测试本地数据库,连接mysql、oracle等关系数据库时hadoop、hive可以不启动。

sqoop list-databases \

 --connect jdbc:mysql://localhost:3306/ \

 --username root --password root

导入导出

去oracle服务器下载其驱动,oracle11g是ojdbc6.jar

路径:$ORACLE_HOME/jdbc/lib/

导入导出操作时,hadoop、mysql必须启动,hive可以不启动,如果要查询验证导入结果,那么必须将hive也要启动。

操作oracle数据库,将oracle驱动放入sqoop的lib中

以root用户登录服务器,上传oracle数据库jdbc驱动ojdbc.jar至/opt

cp /opt/ojdbc6.jar /opt/sqoop-1.4.7/lib/

sqoop list-databases \

 --connect jdbc:oracle:thin:@192.168.12.55:1521:orcl \

 --username test2 --password test2

sqoop list-databases \

 --connect jdbc:oracle:thin:@//192.168.12.55:1521/orcl \

 --username test2 --password test2

导入

用sqoop从oracle导入到hive,要把oracle中的表导入到hive,要在hive创建一个对应oracle表的表(如果没有创建,导入时会自动创建),表结构与oracle中的相同。

oracle中原始数据

hive 建表(hive启动状态)

create table testhivedb.httest(

c1 string

);

sqoop import \

--connect jdbc:oracle:thin:@//192.168.12.55:1521/orcl \

--username test2 \

--password test2 \

--table TEST2.TTEST \

--hive-import \

--hive-database testhivedb \

--hive-table httest \

--hive-overwrite \

-m 1

说明:--table 待导入的表

--hive-database 导入到 Hive 的 sqoop_test 数据库,数据库需要预先创建。不指定则默认为 default 库

--hive-import 导入到 Hive

--hive-overwrite  如果 Hive 表中有数据则覆盖,这会清除表中原有的数据,然后再写入

-m 并行度  # 指定并行执行的 map tasks 数量

注意1:oracle表书写样式为大写 OWNER.TABLENAME,否则可能报错找不到目标表中的字段。

注意2:造成下图所示问题的原因是:默认sqoop在执行导入table过程中会生成对应的table的java文件和编译产生的.class和.jar文件,而class 和 jar文件则保存在/tmp/sqoop-当前用户/compile/ 下相应的文件夹中。本例中用户是root,保存位置见下图2

解决办法:将文件复制到 /opt/sqoop/bin

cp /tmp/sqoop-root/compile/a8c0127e84d64eb49be7b6ad62e6012a/TEST2.TTEST.jar /opt/hive/lib

除了上述这个复制之外,还有一种方法执行导入之前先执行生成代码,并将生成的代码指定保存位置/opt/hive/lib。具体如下

sqoop codegen \

--connect jdbc:oracle:thin:@//192.168.12.55:1521/orcl \

--username test2 \

--password test2 \

--table TEST2.TTEST \

--bindir /opt/hive/lib

注意3:提示已存在

hdfs dfs -ls hdfs://virtualbox-u22034server:9000/user/root/TEST2.TTEST

找到位置,删除

hdfs dfs -rm -r hdfs://virtualbox-u22034server:9000/user/root/TEST2.TTEST

成功如下,虽然有个报错如下,验证如下

导出

用sqoop从hdfs导出到oracle(待)

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

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

相关文章

比特币减半:挑战与机遇

比特币减半是加密货币领域中一件备受关注的大事,它不仅影响着比特币本身的发展,也深刻影响着整个加密货币市场的走势。在这个历史性时刻,我们有必要深入分析比特币减半带来的挑战与机遇,以及未来的加密货币发展趋势。 挑战&#x…

如何配置STM32的UART/USART接口?

配置STM32的UART/USART接口是实现串行通信的基础。以下是详细的配置步骤和示例代码。 1. 选择时钟源 首先,需要确保USART接口的时钟已经使能。通常,这在初始化代码中完成,或者通过STM32CubeMX工具进行配置。 // 假设USART2位于APB1总线上 …

告别Elementor Pro,无需下载,全新中文版的国产替代方案来袭

如果你正在考虑创建自己的网站,那么在第一次谷歌搜索时,你可能已经看到了WordPress、Elementor和网站构建器这些专业名称。WordPress是最受欢迎的网站平台之一,这不难理解:它高度可定制,易于学习,而且是免费…

市场复盘总结 20240415

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率 0% 最常用的…

服务器负载均衡SLB/加密原理

多台服务器提供相同的服务 SLB(server load balancing) 多台服务器对应一个虚拟地址,该地址是防火墙虚拟出来的。 服务器负载均衡功能仅支持IPV4协议 多通道协议仅支持FTP协议

k8s高可用集群部署介绍 -- 理论

部署官网参考文档 负载均衡参考 官网两种部署模式拓扑图和介绍 介绍两种高可用模式 堆叠 拓扑图如下(图片来自k8s官网): 特点:将etcd数据库作为控制平台的一员,由于etcd的共识算法,所以集群最少为3个&…

【面试经典 150 | 数学】阶乘后的零

文章目录 写在前面Tag题目来源题目解读解题思路方法一:数学优化计算 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结…

Github copilot我用正版登录授权的,来体验一下吧

Github copilot 市面上的那种可以说是破解的,不是代码补全不稳定,就是chat不稳定,反正就是不怎样! 下面是官网正版开通的,欢迎体验15天 体验地址:https://www.bilibili.com/read/cv33696436 这种copilo…

zabbix解析以及安装

目录 zabbix 是什么? zabbix 是什么? ●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 ●zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快…

移动Web学习07-适配单位vw/vh哔哩哔哩移动端vw单位适配案例

1.1、VW相对单位 前面我们已经学习了rem单位 &#xff0c;他是一个相对单位、相对于HTML表格字号大小 VW/VH也是一个相对单位&#xff0c;他是相对于视口的尺寸计算结果 VW&#xff1a;viewport width VH: viewport height <meta name"viewport" content"…

软件设计:UML 模型图总结

1. 相关链接 参考教程&#xff1a; https://sparxsystems.com/resources/tutorials/ https://sparxsystems.com/enterprise_architect_user_guide/15.2/model_domains/whatisuml.html Unified Modeling Language (UML) description, UML diagram examples, tutorials and r…

STM32 MPU配置参数

TXE LEVEL一般只用MPU_TEX_LEVEL0 1 - 1 - 1 -0性能最强&#xff08;TEX - C - B- S&#xff09;. #define MPU_TEX_LEVEL0 ((uint8_t)0x00) #define MPU_TEX_LEVEL1 ((uint8_t)0x01) #define MPU_TEX_LEVEL2 ((uint8_t)0x02) 基于上表进行常用配置 &#xff…

Ue不消耗輸入

1、介紹 我們都知道ue裏面使用輸入時&#xff0c;都是在PlayerController裏面進行獲取&#xff0c; 使用官方的操作映射&#xff0c;軸映射&#xff0c;以及目前最新的增强型輸入 但是我們發現了一個問題 那就是輸入會被消耗 就是儅我鼠標按在一個按鈕上時 你另一個地方接受…

Vitis HLS 学习笔记--ap_int.h / ap_fixed.h(2)-深度探究

目录 1. 前文回顾 1.1 简单背后的复杂 1.2 复杂性的来源 2. 关键代码 2.1 功能概述 2.2 关系梳理 2.3 理解构造函数二 2.4 理解HLS_CONSTEXPR 2.5 理解const volatile 3. 探究ap_int<8> c&#xff1b;经历了什么 4. 在调试中查看 1. 前文回顾 在《Vitis HLS…

数据安全之路:Databend 用户与角色管理应用

Databend 目前支持基于角色的访问控制 (RBAC) 和 自主访问控制 (DAC) 模型&#xff0c;用于访问控制功能。 通过本指南&#xff0c;我们会了解权限和角色在 Databend 中的基本概念&#xff0c;以及如何管理角色、继承角色与建立层级、设置默认角色以及所有权的重要性。这些功能…

病毒繁殖-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第52讲。 病毒繁殖&#xf…

气象观测站点数据下载与处理

一、下载途径 全国400多个气象站气候数据&#xff08;1942-2022&#xff09; 王晓磊&#xff1a;中国空气质量/气象历史数据 | 北京市空气质量历史数据 气象数据免费下载网站整理 中国气象站观测的气象数据怎么下载 二、R语言处理 2.1 提取站点文件 library(dplyr) library(…

4、XTuner 微调个人小助手(笔记)

视频地址&#xff1a; https://b23.tv/QUhT6ni 课程文档&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/xtuner/readme.md 作业文档&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md 1、Finetune 简介 两种Finetune范式 …

LeetCode_丑数

题目&#xff1a; 题解&#xff1a; 由题&#xff0c;我们知道丑数大于0&#xff0c;丑数都可以写成2*2*...*2*3*3...*3*5*5...*5&#xff0c;有了这个基础就很好写代码了。 用三个while循环将前面的2 3 5全部除掉如果这个数是丑数&#xff0c;最后n是等于1的&#xff0c;反之…

Leetcode-48-旋转图像

题目说明 给定一个 n n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明&#xff1a;你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入…