hive使用sqoop与oracle传输数据

下载地址

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.mzph.cn/diannao/115.shtml

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

相关文章

5374: 【数学】最后一击

题目描述 小爱和小艾两人组队打一只怪兽。一开始怪兽有 n 点生命值,当 n 变成 0 或更低时,怪兽就被消灭了。他们两人是同时开始攻击的,小爱每分钟可以攻击 a 下,小艾每分钟可以攻击 b 下。若 a2,b4,则小爱…

深圳市第六批专精特新“小巨人”企业申报和第三批专精特新“小巨人”企业申报开始了

各区(新区、特别合作区)相关工作部门,各企业: 根据《工业和信息化部办公厅关于开展第六批专精特新“小巨人”企业培育和第三批专精特新“小巨人”企业复核工作的通知》(工信厅企业函〔2024〕142号)要求&…

中仕公考:2024年广东省高校毕业生‘三支一扶‘公告

2024年广东省三支一扶共计划招募3000名左右高校毕业生,服务期限为两年,具体招募岗位和条件可通过广东人事考试网查询。 招考条件: 年龄不超过30周岁(1993年4月22日后出生); 支教岗位须是已取得教师资格证的高校毕业生,支医专业…

Phpstorm环境配置与应用

PhpStorm是一款功能强大的PHP集成开发环境,配置与应用涉及以下步骤: 下载与安装: 访问 PhpStorm 官网下载地址,选择合适的版本进行下载。双击下载的安装包文件进行安装,过程类似于其他IntelliJ IDEA产品。 个性化设…

C++ | Leetcode C++题解之第23题合并K个升序链表

题目: 题解: class Solution {// 21. 合并两个有序链表ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {auto dummy new ListNode(); // 用哨兵节点简化代码逻辑auto cur dummy; // cur 指向新链表的末尾while (list1 && list2) {if (list1…

秋招嵌入式面经

24秋招-汇川嵌入式面经--超详细! 一面 8月24日投递 9月3日一面(30min) 自我介绍: 介绍一下你的第一个项目吧 对于MCU的选型为什么使用F4的STM32? 项目里面用到了SPI进行两块MCU之间的通信,介绍一下SPI…

Linux操作系统配置git的ssh

系统:Ubuntu20.04LTS 安装git: sudo apt install git 配置git: # 添加全局git用户和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" # 查看用户名和邮箱是否有误 git config --li…

JavaEE初阶Day 13:多线程(11)

目录 Day 13:多线程(11)常见的锁策略1. 悲观锁 vs 乐观锁2. 重量级锁 vs 轻量级锁3. 自旋锁 vs 挂起等待锁4. 可重入锁 vs 不可重入锁5. 公平锁 vs 非公平锁6. 互斥锁 vs 读写锁 synchronized实现原理1. 锁升级2. 锁消除3. 锁粗化 CAS Day 13…

自助棋牌室如何用一招留住80%的客户?

棋牌室如何用一招守住80%的回头客,你想知道吗? 记得收藏,希望对你有一点点帮助! 今天我就分享一个非常简单的方法,简单到所有的棋牌室老板你立马就可以去执行的方法!第一步,加好友,…

Java面试八股之Iterator接口和Iterable接口

1. Java为什么不直接实现Iterator接口,而是实现Iterable? 这道题算是一道比较基础的题,面试官肯定也不是想让回答得多深入,只是考查对迭代器的了解程度,最好是看过源码,实际上迭代器的源码并不难。我们把注释折叠起来…

LIUNX文件系统

目录 1.磁盘的物理结构 2.CHS定位法 3.磁盘的逻辑存储 4.系统层面 inode.block[15] 创建文件的流程 查找文件的流程 了解文件系统,首先要了解磁盘是如何存储和读取数据的。 1.磁盘的物理结构 可以理解这个盘上有很多的小磁铁,通过旋转盘面和摆动…

葡韵饼店:云上清明节,千里寄哀思

清明,又称踏青节、祭祖节、行清节,节期在仲春与暮春之交,源自于上古时代的祖先信仰和春祭礼俗,兼具人文与自然两大内涵。 每当到了这个时候,人们都会携带祭祀物品,与家人们齐聚结伴,登山祭祖&am…

【Python】用python实现编译脚本

这个脚本可以自动扫描目录下的.c和.s文件并编译,同时生成hex和bin文件 ,可以代替Makefile工作。cortex-m 单片机 # -*- coding: gbk -*-import os import sys import time修改编译脚本之后需要全编译一次# CC gcc CC C:\\ARM_GCC\\bin\\arm-none-eabi-…

支付宝支付之SpringBoot整合支付宝创建自定义支付二维码

文章目录 自定义支付二维码pom.xmlapplication.yml自定义二维码类AlipayService.javaAlipayServiceImpl.javaAlipayController.javaqrCode.html 自定义支付二维码 继&#xff1a;SpringBoot支付入门 pom.xml <dependency><groupId>org.springframework.boot<…

PHP中常见的@注释的含义

api: 提供给第三方使用的接口 author: 标明作者 param: 参数 return: 返回值 todo: 待办 version: 版本号 inheritdoc: 文档继承 property: 类属性 property-read: 只读属性 property-write: 只写属性 const: 常量 deprecated: 过期方法 example: 示例 final: 标识类是终态, 禁…

前端开发该不该“跳槽”到鸿蒙?

前言 面对互联网行业的激烈竞争&#xff0c;许多人都深感2023年已是不易&#xff0c;而展望2024年&#xff0c;似乎更是难上加难。这一切的根源&#xff0c;皆因行业多年发展后&#xff0c;人才市场的饱和现象愈发严重。那么&#xff0c;作为前端开发者&#xff0c;我们究竟该…

速看!2024年强基计划报考流程及常见问答

01什么是强基计划&#xff1f; 为加强基础学科拔尖创新人才选拔培养&#xff0c;教育部在深入调研、总结高校自主招生和上海等地高考综合改革试点经验的基础上&#xff0c;制定出台了《关于在部分高校开展基础学科招生改革试点工作的意见》&#xff08;也称“强基计划”&#…

SpringBoot启动加载自己的策略类到容器中使用?

使用InitializingBean接口 springboot中在启动的会自动把所有的实现同一个接口的类&#xff0c;都会转配到标注Autowired的list里面 而且实现了InitializingBean接口&#xff0c;在启动的赋值的时候&#xff0c;我们会把所有的策略类&#xff0c;重放到map中&#xff0c;我们在…

c++ 11 添加功能 变量类型推导

1.概要 变量类型推导 2.代码 #include <iostream> #include <map> using namespace std; int main() { std::map<std::string, std::string> m{ {"a", "apple"}, {"b","banana"} }; // 使用迭代器遍历…

发布订阅模式以及mitt源码实现

发布订阅模式以及mitt源码实现 前言&#xff1a;我为什么要写他&#xff1f; 场景1: 我在写一个组件&#xff0c;但是层层传递之后&#xff0c;全是属性/事件的传递。中间有很多缘由&#xff0c;vuex 又不适合&#xff0c;最后选择了eventBus&#xff0c;但是vue3 已经不再提供…