Sqoop学习

目录

一、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中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WiFi一直获取不到IP地址是怎么回事?

在当今这个信息化时代,WiFi已成为我们日常生活中不可或缺的一部分。无论是家庭、办公室还是公共场所,WiFi都为我们提供了便捷的无线互联网接入。然而,有时我们可能会遇到WiFi连接后无法获取IP地址的问题,这不仅影响了我们的网络使…

FasterNet中Pconv的实现、效果与作用分析

发表时间:2023年3月7日 论文地址:https://arxiv.org/abs/2303.03667 项目地址:https://github.com/JierunChen/FasterNet FasterNet-t0在GPU、CPU和ARM处理器上分别比MobileViT-XXS快2.8、3.3和2.4,而准确率要高2.9%。我们的大型…

如何快速搭建一个spring boot项目

一、准备工作 1.1 安装JDK:确保计算机上已安装Java Development Kit (JDK) 8或更高版本、并配置了环境变量 1.2 安装Maven:下载并安装Maven构建工具,这是Spring Boot官方推荐的构建工具。 1.3 安装代码编辑器:这里推荐使用Inte…

从零开始训练一个大语言模型需要多少天?

一,前言 在AI领域,训练一个大型语言模型(LLM)是一个耗时且复杂的过程。几乎每个做大型语言模型(LLM)训练的人都会被问到:“从零开始,训练大语言模型需要多久和花多少钱?”…

成大事者,不外传的心计

成大事者,不外传的心计: 1.男人要避开闺蜜众多的女人。 2.追求女生,不可过于主动,心急难以品尝到热豆腐的美味。 3.倘若这个人身边没什么朋友,那就要赶快远离。 4.让利,是拓展人脉资源的有效法门。 5.…

如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器

作者:来自 Elastic Hemendra Singh Lodhi 了解将数据从 AWS S3 导入 Elastic Cloud 的不同选项。这次我们将重点介绍 Elastic S3 Connector。 这是多部分博客系列的第三部分,探讨了将数据从 AWS S3 导入 Elastic Cloud 的不同选项。 在本博客中&#xf…

产品经理如何使用项目管理软件推进复杂项目按时上线

前言 相信很多产品同学或多或少都有过这样的经历:平时没有听到任何项目延期风险,但到了计划时间却迟迟无法提测……评审时没有任何argue,提测后发现开发的功能不是自己想要的……费劲九牛二虎之力终于让项目上线了,然而发现成果达…

K8S node节点没有相应的pod镜像运行故障处理办法

查看从节点状态 kubectl describe node k8s-node1以下是报错提示 解决办法 需要处理node1节点上的磁盘空间,磁盘空间需要在85%内 处理后的状态 处理正常

11.9.2024刷华为

文章目录 HJ31 单词倒排HJ32 密码提取语法知识记录 傻逼OD题目又不全又要收费,看毛线,莫名奇妙 HW这叼机构别搁这儿害人得不得? 我觉得我刷完原来的题目 过一遍华为机考的ED卷出处,就行了 HJ31 单词倒排 游戏本做过了好像 HJ3…

Colmap3.8 [CUDA]和[NO CUDA]版本

Colmap3.8 [CUDA]和[NO CUDA]版本的下载地址如下所示: 通过百度网盘分享的文件:colmap3.8 链接:https://pan.baidu.com/s/1kfbUqFI5N2t8Bx2MasFKXQ?pwd998n 提取码:998n 解压即可使用,运行时,点击下图…

sealos部署K8s,安装docker时master节点突然NotReady

1、集群正常运行中,在集群master-1上安装了dockerharbor,却发现master-1节点NotReady,使用的网络插件为 Cilium #安装docker和harbor(docker运行正常) rootmaster-1:/etc/apt# apt install docker-ce5:19.03.15~3-0~u…

NoETL自动化指标平台为数据分析提质增效,驱动业务决策

直觉判断往往来源于多年的经验和专业知识,能够在复杂和不确定的环境中快速做出决策反应。但这种方式普遍存在主观偏见,缺乏合理的科学依据,无法全面、客观、精准地评估和识别市场趋势与用户需求,从而造成决策失误,给业…

vscode的一些使用心得

问题1:/home目录空间有限 连接wsl或者remote的时候,会在另一端下载一个.vscode-server,vscode的插件都会安装进去,导致空间增加很多,可以选择更换这个文件的位置 参考:https://blog.csdn.net/weixin_4389…

《JavaEE进阶》----21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)>

PS: 开闭原则 定义和背景‌ ‌开闭原则(Open-Closed Principle, OCP)‌,也称为开放封闭原则,是面向对象设计中的一个基本原则。该原则强调软件中的模块、类或函数应该对扩展开放,对修改封闭。这意味着一个软…

Flutter错误: uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared

前言 今天要做蓝牙通信的功能,我使用了flutter_reactive_ble这个库,但是在运行的时候发现一下错误 Launching lib/main.dart on AQM AL10 in debug mode... /Users/macbook/Desktop/test/flutter/my_app/android/app/src/debug/AndroidManifest.xml Err…

【C++滑动窗口】1297. 子串的最大出现次数|1748

本文涉及的基础知识点 C算法:滑动窗口及双指针总结 固定长度滑动窗口 LeetCode1297. 子串的最大出现次数 给你一个字符串 s ,请你返回满足以下条件且出现次数最大的 任意 子串的出现次数: 子串中不同字母的数目必须小于等于 maxLetters 。…

信息宣传投稿栽跟头不可怕,关键是你要能再站起来

在繁忙的市郊,一家的事业基层单位,这里汇聚了各路英才,每个科室都有自己的专长。然而,有一项任务,让这些精英们头疼不已——单位信息宣传投稿。 起初,大家对这项任务并不以为然,以为不过是小菜一碟。李科长甚至开玩笑说:“不就是写篇文章,投个稿嘛,我们这些笔杆子还怕这个?”…

[极客大挑战 2019]PHP 1

[极客大挑战 2019]PHP 1 审题 猜测备份在www.zip中,输入下载文件。 知识点 反序列化 解题 查看代码 看到index.php中包含了class.php,直接看class.php中的代码 查看条件 当usernameadmin,password100时输出flag 构造反序列化 输入select中&#…

【初阶数据结构与算法】线性表之单链表的定义与实现

文章目录 一、单链表的概念与结构1.单链表的概念2.单链表的节点3.链表的性质 二、单链表的实现1.结构准备2.链表的打印和节点申请打印函数节点申请函数 3.链表的头插和尾插头插函数尾插函数 4.链表的头删和尾删头删函数尾删函数 5.查找指定节点6.指定节点位置的删除和插入删除指…

SCNU习题 总结与复习

1. P1:构建最大二叉树 【分治】 重点 构树函数需要注意的点; 前序遍历需要注意,本题的输出有点特点。若一个结点无左子,无右子就不再下去遍历; 其他情况都要下去遍历; 2. P2 寻找多数【分治】 没啥,注意…