Sqoop学习

news2024/11/24 17:31:24

目录

一、Soop简介

二、Sqoop的安装

1. 上传压缩包到/opt/install目录下

2.解压

3.修改文件名

4.拷贝sqoop-1.4.7.bin__hadoop-2.6.0目录下的sqoop-1.4.7.jar包到/opt/soft/sqoop147目录下

5.拷贝sqoop-1.4.7.bin__hadoop-2.6.0/lib目录下该jar包到sqoop/lib目录下

6.复制hive的jar包到sqoop147/lib目录下

7.修改配置文件 

8.配置环境变量

9.检验Sqoop是否安装成功

10.退出安全模式

三、使用案例

(一)Sqoop查看mysql数据库

(二)查看指定数据库下所有表

(三)Sqoop创建Hive表

(四)导入案例——mysql导入HDFS

1.将mysql中的表全部导入到HDFS指定目录下的文件中

2.导入HDFS时添加条件过滤

3.指定列导入HDFS

4.查询语句导入HDFS

(五)导入案例——将mysql数据库中的表导入到Hive中

1.全表导入hive的default库中

2.导入到hive的指定库中


一、Soop简介

        Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql等)间进行数据的传递。可以将关系型数据库(MySQL ,Oracle,Postgres等)中的数据导入到HDFS中,也可以将HDFS的数据导进到关系型数据库中。

        Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个 Apache 项目。

二、Sqoop的安装

1. 上传压缩包到/opt/install目录下

2.解压

[root@lxm147 install]# tar -zxf sqoop-1.4.7.tar.gz -C /opt/soft/

3.修改文件名

[root@lxm147 soft]# mv sqoop-1.4.7/ sqoop147

4.拷贝sqoop-1.4.7.bin__hadoop-2.6.0目录下的sqoop-1.4.7.jar包到/opt/soft/sqoop147目录下

5.拷贝sqoop-1.4.7.bin__hadoop-2.6.0/lib目录下该jar包到sqoop/lib目录下

6.复制hive的jar包到sqoop147/lib目录下

[root@lxm147 lib]# cp /opt/soft/hive312/lib/hive-common-3.1.2.jar ./

[root@lxm147 lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar ./

7.修改配置文件 

[root@lxm147 conf]# pwd
/opt/soft/sqoop147/conf
[root@lxm147 conf]# ll
total 20
-rw-rw-r--. 1 lxm lxm 3895 Dec 19  2017 oraoop-site-template.xml
-rw-rw-r--. 1 lxm lxm 1404 Dec 19  2017 sqoop-env-template.cmd
-rwxr-xr-x. 1 lxm lxm 1345 Dec 19  2017 sqoop-env-template.sh
-rw-rw-r--. 1 lxm lxm 6044 Dec 19  2017 sqoop-site-template.xml
[root@lxm147 conf]# cp sqoop-env-template.sh sqoop-env.sh

[root@lxm147 conf]# vim sqoop-env.sh


 22 #Set path to where bin/hadoop is available
 23 export HADOOP_COMMON_HOME=/opt/soft/hadoop313
 24 
 25 #Set path to where hadoop-*-core.jar is available
 26 export HADOOP_MAPRED_HOME=/opt/soft/hadoop313
 27 
 28 #set the path to where bin/hbase is available
 29 #export HBASE_HOME=
 30 
 31 #Set the path to where bin/hive is available
 32 export HIVE_HOME=/opt/soft/hive312
 33 export HIVE_CONF_DIR=/opt/soft/hive312/conf
 34 #Set the path for where zookeper config dir is
 35 export ZOOCFGDIR=/opt/soft/zookeeper345/conf

8.配置环境变量

# SQOOP_HOME
export SQOOP_HOME=/opt/soft/sqoop147
export PATH=$PATH:$SQOOP_HOME/bin


source /etc/profile

9.检验Sqoop是否安装成功

sqoop version

出现版本信息即可

10.退出安全模式

[root@lxm147 ~]# hdfs dfsadmin -safemode leave
Safe mode is OFF

三、使用案例

(一)Sqoop查看mysql数据库

[root@lxm147 ~]# sqoop list-databases \
> --connect jdbc:mysql://192.168.180.141:3306 \
> --username root \
> --password root

(二)查看指定数据库下所有表

sqoop list-tables \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root \
> --password root

(三)Sqoop创建Hive表

[root@lxm147 ~]# sqoop create-hive-table --help

在hive中创建一个teacher表,与mysql50库中的teacher结构相同

mysql50中teacher表结构:

sqoop create-hive-table --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table teacher --hive-table teacher


sqoop create-hive-table --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table teacher --hive-table teacher1 

(四)导入案例——mysql导入HDFS

1.将mysql中的表全部导入到HDFS指定目录下的文件中

[root@lxm147 ~]# sqoop import \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root --password root \
> --table sc \
> --target-dir /tmp/mysql50/sc \
> --fields-terminated-by '\t' \
> -m 1

-m 2

sqoop import --connect jdbc:mysql://192.168.180.141:3306/kb21 --username root --password root --table account --target-dir /tmp/kb21/account --fields-terminated-by '\t' -m 2
[root@lxm147 ~]# hdfs dfs -cat /tmp/kb21/account/part-m-00000
2023-03-09 11:01:04,748 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
1	张三	2500.00
[root@lxm147 ~]# hdfs dfs -cat /tmp/kb21/account/part-m-00001
2023-03-09 11:01:32,211 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
2	李四	2500.00

主键值%3=0,1,2放在不同的桶中

-m 3

2.导入HDFS时添加条件过滤

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --where "sid='01'" --target-dir /tmp/mysql50/sid01 -m 1 
[root@lxm147 ~]# hdfs dfs -cat /tmp/mysql50/sid01/part-m-00000
2023-03-09 11:28:22,867 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
01,01,80.0
01,02,90.0
01,03,99.0

3.指定列导入HDFS

[root@lxm147 ~]# sqoop import \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root --password root \
> --table sc --columns "cid,score" --where "sid='01'" \
> --target-dir /tmp/mysql50/sid02 \
> -m 1



[root@lxm147 ~]# hdfs dfs -cat /tmp/mysql50/sid02/part-m-00000
2023-03-09 11:32:48,382 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
01,80.0
02,90.0
03,99.0
​

4.查询语句导入HDFS

[root@lxm147 ~]# sqoop import \
> --connect jdbc:mysql://192.168.180.141:3306/mysql50 \
> --username root \
> --password root \
> --target-dir /tmp/mysql50/squery \
> --query 'select * from sc where $CONDITIONS and CID="02" and score > 80 ' \
> --fields-terminated-by "\t" \
> -m 1


[root@lxm147 ~]# hdfs dfs -cat /tmp/mysql50/squery/part-m-00000
2023-03-09 11:58:21,914 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
01	02	90.0
05	02	87.0
07	02	89.0

(五)导入案例——将mysql数据库中的表导入到Hive中

1.全表导入hive的default库中

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import -m 1

2.导入到hive的指定库中

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import --hive-database kb21 -m 1

重写,元数据会被覆盖

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import --hive-overwrite --hive -database kb21 -m 1

增量导入

[root@lxm147 ~]# sqoop import --connect jdbc:mysql://192.168.180.141:3306/mysql50 --username root --password root --table sc --hive-import --incremental --hive -database kb21 -m 1

(六)Hive导入到mysql中

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

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

相关文章

关于随身wifi,看了再决定要不要买!2024年最受欢迎的随身wifi品牌推荐!

话费、流量费缴纳起来肉疼,毕竟不是每个月都有很大需求,主打一个该省省该花花。特别是短租人群、在校学生、出差或旅游的人群、追求高性价比的人群,随身Wifi特别实用,出门当WiFi,在家当宽带,两不耽误&#…

[vulnhub] DarkHole: 1

https://www.vulnhub.com/entry/darkhole-1,724/ 端口扫描主机发现 探测存活主机,184是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 09:59 CST Nmap scan report for 192.168.75.1 Host is up (0.00027s latency). MA…

iPhone 微信传大文件到QQ

问题 解决方法 在微信里打开要拷贝的文件 选择“...” 选择“用其他应用打开” 长按QQ 选择“拷贝到App”(有些版本是“在App中打开”)

【学习笔记】网络设备(华为交换机)基础知识 11 —— 信息中心 ② 配置案例

提示:学习华为交换机信息中心配置案例,包含配置输出Log信息 ( 输出到Log缓冲区、控制台、日志文件、终端 )、配置输出Trap信息 ( 输出到Trap缓冲区、控制台、日志文件、终端 )、 配置输出Debug信息 &#x…

电脑管家实时监控软件下载 | 六款知名又实用的电脑监控软件推荐!(珍藏篇)

在当今的商业环境,企业对于员工在工作期间的行为监控需求越来越强烈。 尤其是在网络化和信息化程度不断提高的今天,电脑管家实时监控软件是企业管理员工工作行为、提高工作效率、防止信息泄露的重要工具。 本文,将为您推荐六款知名又实用的电…

PICO+Unity MR空间网格

官方链接:空间网格 | PICO 开发者平台 注意:该功能只能打包成APK在PICO 4 Ultra上真机运行,无法通过串流或PICO developer center在PC上运行。使用之前要开启视频透视。 在 Inspector 窗口中的 PXR_Manager (Script) 面板上,勾选…

Spring Boot中集成MyBatis操作数据库详细教程

目录 前言1. 项目依赖配置1.1 引入MyBatis和数据库驱动依赖1.2 数据源配置 2. 创建数据库映射实体类3. 创建Mapper层接口4. 创建Service层4.1 定义Service接口4.2 实现Service接口 5. 创建Controller层6. 运行和测试项目6.1 启动项目6.2 测试接口 7. 总结 前言 在Java开发中&a…

DirectShow过滤器开发-写AVI视频文件过滤器

下载本过滤器DLL 本过滤器将视频流和音频流写入AVI视频文件。 过滤器信息 过滤器名称:写AVI 过滤器GUID:{2EF49957-37DF-4356-A2A0-ECBC52D1984B} DLL注册函数名:DllRegisterServer 删除注册函数名:DllUnregisterServer 过滤器有…

使用 API 和离线库查询 IP 地址方法详解

目录 一、IP 地址查询能获取哪些信息1.地理位置信息2.网络信息3.网络类型 二、IP 地址查询方法,附代码1.在线查询 IP 地址方法2.使用 API 进行 IP 地址查询3.使用离线库进行 IP 地址查询 互联网监管部门要求公开 IP 归属地,引起了很大热度,但…

机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着数据采集技术的发展,时间序列数据在各个领域中的应用越来越广泛。时间序列预测旨在基于过去的时间数据来…

语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验

一、智能烤箱产品的行业背景 随着科技的飞速发展,智能家居已经成为现代家庭的新宠。智能烤箱作为智能家居的重要组成部分,正逐渐从高端市场走向普通家庭。消费者对于烤箱的需求不再仅仅局限于基本的烘焙功能,而是更加注重其智能化、便捷化和…

【C++】异常处理机制(对运行时错误的处理)

🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》 ⛰️ 天高地阔,欲往观之。 目录 引言 1.编译器可以处理的错误 2.编译器不能处理的错误 3.传统的错误处理机制 assert终止程序 返回错误码 一、…

Python基础学习-03逻辑分支语句、循环

目录 1、记住逻辑关系 2、逻辑分支语句 3、for-loop循环 4、while-loop 5、break 和 continue 6、本节总结 1、记住逻辑关系 • 逻辑关系 1) True(真) 和 False(假) 2)逻辑关系有 and(与…

【Windows】Android Studio 上cmd 换为Powershell 终端

最近在Windows 环境下Android Studio 的Terminal 终端,低版本默认用的是cmd.exe,好多linux 命令不支持,有时候一不小心就记忆错了;干脆直接换成Windows PowerShell 得了。 下载Powershell:https://aka.ms/PSWindows 选…

javascript实现sha512和sha384算法(支持微信小程序),可分多次计算

概述: 本人前端需要实现sha512和sha384计算的功能,最好是能做到分多次计算。 本文所写的代码在现有sha512和sha384的C代码,反复测试对比计算过程参数,成功改造成sha512和sha384的javascript代码,并成功验证好分多次计算…

Pr 视频过渡:沉浸式视频

效果面板/视频过渡/沉浸式视频 Video Transitions/Immersive Video Adobe Premiere Pro 的视频过渡效果中,沉浸式视频 Immersive Video效果组主要用于 VR 视频剪辑之间的过渡。 自动 VR 属性 Auto VR Properties是所有 VR 视频过渡效果的通用选项。 默认勾选&#x…

Ascend C的编程模型

1 并发执行 Ascend C和cudnn相似,都是一种多核心编程的范式。想要了解Ascend C,必须得先掌握这种“多核”是怎么实现得。 多核执行,说白了就是使用CPU/GPU/Ascend的物理多核并发去执行一段流程,一般情况下,可以通过以…

商品,订单风控业务梳理二

订单风控流程 业务风控系统

苍穹外卖05-Redis相关知识点

目录 什么是Redis? redis中的一些常用指令 value的5种常用数据类型 各种数据类型的特点 Redis中数据操作的常用命令 字符串类型常用命令: 哈希类型常用命令 列表操作命令 集合操作命令 有序集合操作命令 通用命令 在java中操作Redis 环境…

一些面试题总结(一)

1、string为什么是不可变的,有什么好处 原因: 1、因为String类下的value数组是用final修饰的,final保证了value一旦被初始化,就不可改变其引用。 2、此外,value数组的访问权限为 private,同时没有提供方…