Sqoop学习

ops/2024/11/14 23:33:29/

目录

一、Soop简介

二、Sqoop的安装

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

2.解压

3.修改文件名

sqoop-1.4.7.bin__hadoop-2.6.0%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84sqoop-1.4.7.jar%E5%8C%85%E5%88%B0%2Fopt%2Fsoft%2Fsqoop147%E7%9B%AE%E5%BD%95%E4%B8%8B-toc" style="margin-left:80px;">4.拷贝sqoop-1.4.7.bin__hadoop-2.6.0目录下的sqoop-1.4.7.jar包到/opt/soft/sqoop147目录下

sqoop-1.4.7.bin__hadoop-2.6.0%2Flib%E7%9B%AE%E5%BD%95%E4%B8%8B%E8%AF%A5jar%E5%8C%85%E5%88%B0sqoop%2Flib%E7%9B%AE%E5%BD%95%E4%B8%8B-toc" style="margin-left:80px;">5.拷贝sqoop-1.4.7.bin__hadoop-2.6.0/lib目录下该jar包到sqoop/lib目录下

sqoop147%2Flib%E7%9B%AE%E5%BD%95%E4%B8%8B-toc" style="margin-left:80px;">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

sqoop-1.4.7.bin__hadoop-2.6.0%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84sqoop-1.4.7.jar%E5%8C%85%E5%88%B0%2Fopt%2Fsoft%2Fsqoop147%E7%9B%AE%E5%BD%95%E4%B8%8B">4.拷贝sqoop-1.4.7.bin__hadoop-2.6.0目录下的sqoop-1.4.7.jar包到/opt/soft/sqoop147目录下

sqoop-1.4.7.bin__hadoop-2.6.0%2Flib%E7%9B%AE%E5%BD%95%E4%B8%8B%E8%AF%A5jar%E5%8C%85%E5%88%B0sqoop%2Flib%E7%9B%AE%E5%BD%95%E4%B8%8B">5.拷贝sqoop-1.4.7.bin__hadoop-2.6.0/lib目录下该jar包到sqoop/lib目录下

sqoop147%2Flib%E7%9B%AE%E5%BD%95%E4%B8%8B">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.sh22 #Set path to where bin/hadoop is available23 export HADOOP_COMMON_HOME=/opt/soft/hadoop31324 25 #Set path to where hadoop-*-core.jar is available26 export HADOOP_MAPRED_HOME=/opt/soft/hadoop31327 28 #set the path to where bin/hbase is available29 #export HBASE_HOME=30 31 #Set the path to where bin/hive is available32 export HIVE_HOME=/opt/soft/hive31233 export HIVE_CONF_DIR=/opt/soft/hive312/conf34 #Set the path for where zookeper config dir is35 export ZOOCFGDIR=/opt/soft/zookeeper345/conf

8.配置环境变量

# SQOOP_HOME
export SQOOP_HOME=/opt/soft/sqoop147
export PATH=$PATH:$SQOOP_HOME/binsource /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 teachersqoop 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.ppmy.cn/ops/133707.html

相关文章

SOLIDWORKS代理商鑫辰信息科技

鑫辰信息科技是一家专业的SOLIDWORKS代理商,致力于为客户提供全面的CAD解决方案和技术支持。作为SOLIDWORKS的授权合作伙伴,鑫辰信息科技在机械设计、产品开发和工程仿真等领域拥有丰富的经验和专业知识,能够帮助客户有效提升设计和生产效率。…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言,简称Golang,是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,…

【Python】爬虫通过验证码

1、将验证码下载至本地 # 获取验证码界面html url http://www.example.com/a.html resp requests.get(url) soup BeautifulSoup(resp.content.decode(UTF-8), html.parser)#找到验证码图片标签,获取其地址 src soup.select_one(div.captcha-row img)[src]# 验证…

简单的TCP程序

文章目录 3. TCP程序3.1 接口3.1.1 inet_aton()3.1.2 listen()3.1.3 现在的服务器代码3.1.4 accept()3.1.5 inet_ntop()3.1.6 tcpClient.cc 3.2 并发的 tcpServer3.2.1 多进程版本3.2.2 多线程版本3.2.3 线程池版本 3.3 继续完善3.3.1 增加客户端重连功能3.3.2 守护进程 3. TCP…

Hadoop学习 第四章 Hive

第四章 Apache Hive概述 对数据进行统计分析,SQL是目前最为方便的编程工具。 大数据体系中充斥着非常多的统计分析场景 所以,使用SQL去处理数据,在大数据中也是有极大的需求的。 MapReduce支持程序开发(Java、Python等) 但不支持SQL开发 …

vue 计算属性get set

<template><div id"app"><h1>用户信息</h1><p>全名&#xff1a;{{ fullName }}</p><input v-model"fullName" placeholder"请输入全名" /><p>姓&#xff1a;{{ firstName }}</p><p>…

LeetCode题练习与总结:字符串中的第一个唯一字符--387

一、题目描述 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入: s "leetcode" 输出: 0示例 2: 输入: s "loveleetcode" 输出: 2示例 3: 输入: …

如何在 Spring Boot 中启用定时任务

添加 EnableScheduling 注解 可以添加在 Application 类上 SpringBootApplication EnableScheduling public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }定义定时任务类和方法 定时任务类要注册为Spri…