Sqoop笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: Sqoop笔记

Sqoop介绍


百度:


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


我认为:


Sqoop就是将Hadoop、Hive、Habse中的数据导入到关系型数据库(MySQL)中或者MySQL到Hadoop、Hive、Habse中,避免手写MapReduce


Sqoop安装


注意


1) Sqoop的包:sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz  支持  hadoop-2.x.x版本,不是只支持2.0.4

2)hadoop和hive安装成功

3)内容没有涉及HBase

4)RDBMS指的是关系型数据库,可以理解为MySQL


安装步骤


将安装包解压到制定目录下


1.png


进入解压目录下的conf目录下,将sqoop-env-template.sh复制一份重命名为sqoop-env.sh


2.png


修改sqoop-env.sh


3.png


#Set path to where bin/hadoop is available
#export HADOOP_COMMON_HOME=
export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
#Set path to where hadoop-*-core.jar is available
#export HADOOP_MAPRED_HOME=
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
#set the path to where bin/hbase is available
#export HBASE_HOME=
#Set the path to where bin/hive is available
#export HIVE_HOME=
export HIVE_HOME=/opt/module/hive
#Set the path for where zookeper config dir is
#export ZOOCFGDIR=
export ZOOCFGDIR=/opt/module/zookeeper-3.4.5/conf
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.5


拷贝JDBC驱动:因为需要操作MySQL


拷贝或者上传 jdbc 驱动(mysql-connector-java-5.1.27-bin.jar)到 sqoop 的 lib 目录下


JDBC驱动寻找地址:如果你安装配置过hive,那你就应该有将 jdbc驱动拷贝到hive/lib目录下,如果没配置过,说明你hive的配置不完整


验证 Sqoop


bin/sqoop help


4.png


Sqoop使用


导入数据


在 Sqoop 中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE, HBASE)中传输数据,叫做:导入,即使用 import 关键字。


全部导入:RDBMS(MySQL) 到 HDFS


1)开启MySQL服务并且能正常连接

2)Hadoop开启并且HDFS能正常访问

3)创建表并且插入数据


5.png


4)导入


其中


--connect jdbc:                               mysql的地址

--username                                     mysql用户名

--password                                      mysql密码

--table                                               操作的表

--target-dir                                        要存在HDFS中的哪个目录下

--delete-target-dir \                        如果 target-dir存在,就删除

--num-mappers 1 \                        设置mapper的个数为1

--fields-terminated-by "\t"              导入HFDS中,字段之间用   \t    分开


 bin/sqoop import \
 --connect jdbc:mysql://127.0.0.1:3306/demo \
--username root \
--password root \
--table user \
--target-dir /demo/user \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"


5)查看导入结果


6.png


查询导入:RDBMS(MySQL) 到 HDFS


--quality 查询语句


注意:1) where 后面一定要加 and $CONDITIONS;

           2)--quality  不能和  --table  一起使用


 bin/sqoop import \
 --connect jdbc:mysql://127.0.0.1:3306/demo \
--username root \
--password root \
--target-dir /demo/user \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select id,name from user where id <=1 and $CONDITIONS;'


导入指定列:RDBMS(MySQL) 到 HDFS


注意:columns 中如果涉及到多列,用逗号分隔,分隔时不要添加空格


 bin/sqoop import \
 --connect jdbc:mysql://127.0.0.1:3306/demo \
--username root \
--password root \
--target-dir /demo/user \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,age \
--table user


RDBMS(MySQL) 到 Hive


其中 --hive-table 为你要导入到Hive的哪张表中


bin/sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/demo \
--username root \
--password root \
--table user \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table user_hive


7.jpg


导出数据(没import用的不多)


在 Sqoop 中,“导出”概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群 (RDBMS)中传输数据,叫做:导出,即使用 export 关键字。


HIVE/HDFS 到 RDBMS(MySQL)


Hive的数据本身就在HDFS的某一路径下,所以将Hive中的数据迁移到MySQL本质上也是HDFS中的某文件迁移到MySQL


--table 指的是数据库中的表名称


--export -dir 指的是hive中 的数据表在HDFS上的路径


注意:如果将Hive中数据导出到MySQL上,注意主键冲突的问题,否则会卡住


bin/sqoop export \
--connect jdbc:mysql://127.0.0.1:3306/demo \
--username root \
--password root \
--table user \
--num-mappers 1 \
--export-dir /user/hive/warehouse/user_hive \
--input-fields-terminated-by "\t"


脚本打包


使用 opt 格式的文件打包 sqoop 命令,然后执行

我认为:Sqoop脚本打包就是将上面学的命令放在xxx.opt文件里,然后执行文件


创建SQoop的opt脚本


注意:


1)一行一个命令或者是参数

2)不能加反斜杠


export
--connect 
jdbc:mysql://127.0.0.1:3306/demo
--username 
root 
--password 
root 
--table 
user 
--num-mappers 
1 
--export-dir 
/user/hive/warehouse/user_hive 
--input-fields-terminated-by 
"\t"


运行opt文件


其实 myopt/hive2mysql.opt为自己编写的opt的路径


bin/sqoop  --options-file myopt/hive2mysql.opt


利用Sqoop实现Hbase的数据与MySQL数据的互导


参考


利用Sqoop实现Hbase的数据与MySQL数据的互导 - 简书


mysql  to  hbase

./bin/sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/fdcp-dev \
--username root \
--password 123456 \
--table adviceMessage \
--hbase-table pzz_adviceMessage  \
--column-family cf \
--hbase-row-key id \
--hbase-create-table


hbase to mysql



资料下载


参考资料:实力圈粉,人手一套尚硅谷教程


参考资料下载:


链接:https://pan.baidu.com/s/1ddD7FS7gCobPX6nZgHu1mw

提取码:5xka

复制这段内容后打开百度网盘手机App,操作更方便哦

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8月前
|
分布式计算 Hadoop 关系型数据库
使用Sqoop将数据导入Hadoop的详细教程
使用Sqoop将数据导入Hadoop的详细教程
|
8月前
|
SQL 分布式计算 关系型数据库
sqoop快速安装
sqoop快速安装
74 0
|
SQL 分布式计算 关系型数据库
Sqoop面试题
Sqoop面试题
101 0
|
SQL 分布式计算 关系型数据库
sqoop的安装和使用
sqoop的安装和使用
|
SQL 弹性计算 分布式计算
Hive安装(图文并茂)
Hive安装(图文并茂)
258 0
Hive安装(图文并茂)
|
SQL 分布式计算 Oracle
【Sqoop】(一)Sqoop 概述及安装环境搭建
【Sqoop】(一)Sqoop 概述及安装环境搭建
442 0
【Sqoop】(一)Sqoop 概述及安装环境搭建
|
SQL 存储 分布式计算
Hadoop-Hive基础知识整理
Hadoop-Hive基础知识整理
Hadoop-Hive基础知识整理
|
SQL 大数据 关系型数据库
【Sqoop】(二)Sqoop 的简单使用案例
【Sqoop】(二)Sqoop 的简单使用案例
216 0
|
SQL 监控 关系型数据库
sqoop学习总结
自行学习总结
|
存储 SQL 数据库
Hive笔记
此文是学习《Hive编程指南》时所作的笔记,用于加深理解。
2467 0