大数据分析:sqoop学习笔记

1. sqoop框架介绍

sqoop是SQL到Hadoop的数据迁移工具。

SQL-to-Hadoop:Sqoop是用于在结构化数据库Hadoop之间高效传输大批量数据的工具。

Sqoop作用是从结构化数据库向Hadoop中导入数据,也可以从Hadoop向结构化数据库导出数据。

在这里的结构化数据库可以是MySQL、Oracle或者主机等;Hadoop可以是HDFS、Hive、HBase

导入到Hadoop的数据可以通过MapRudece进行处理。

Sqoop的底层原理本质上是MapReduce任务。首先通过MapReduce从数据库导出一个表,然后从表中逐行抽取数据,最后将一行行的数据导入或导出HDFS。

总而言之,sqoop是用来向hadoop传输结构化数据的传输工具。

2. sqoop的安装配置

1.下载Sqoop
打开官网,选择镜像,选择版本,选择下载链接
2.解压缩
tar -zxvf … -C …
3.配置sqoop-env.sh文件
在这里插入图片描述
解压缩后进入sqoop文件夹的conf文件夹下,打开sqoop-env.sh进行配置

在这里插入图片描述

这里需要配置四个环境变量:
HADOOP_COMMON_HOME,
HADOOP_MAPRED_HOME,
HBASE_HOME,
HIVE_HOME.

HADOOP_COMMON_HOME与HADOOP_MAPRED_HOME,需要填hadoop文件夹路径

HBASE_HOME,填hbase的文件夹路径
HIVE_HOME.填hive的文件夹路径

配置完保存退出

为了之后使用sqoop方便,可以去~/.bashrc配置环境变量

vi sqoop-env.sh

vi ~/.bashrc

在这里插入图片描述
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

记得配完要 source ~/.bashrc

4.把MYSQL的驱动复制到sqoop的lib下(如果要使用mysql导数据到hadoop的话)

cp mysql-connector-java-5.1.40-bin.jar /usr/local/sqoop/lib
在这里插入图片描述
我的驱动在hive的lib里

查看一下sqoop是不是与mysql链接了

在这里插入图片描述
sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root -P

然后输入密码
在这里插入图片描述

出现这个就连接成功了

3. sqoop的使用

sqoop是通过执行配置文件实现对数据的导入导出

(1)将数据从Hive导出MySQL
“结果截图”中mysql中ml表的前10行数据即可
select * from ml limit 10;

【配置文件】

export
--connect
jdbc:mysql://localhost:3306/shopping    //要链接的mysql数据库
--username
root
--password
hadoop
--table  //表名
ml
--export-dir
'/user/hive/warehouse/movielens.db/ml'
--fields-terminated-by  //hive里的表用的分隔符
','

在这里插入图片描述

执行配置文件

sqoop --options-file /opt/sqoopconf/conf1

数据导出成功
在这里插入图片描述
在mysql查看该数据

在这里插入图片描述

(2)将数据从MySQL导入HBase
“结果截图”中hbase中ml表的前10行数据即可
scan ‘ml’,{LIMIT=>10}

【配置文件】

import
--connect
jdbc:mysql://localhost:3306/shopping
--username
root
--password
hadoop
--table
ml
--hbase-table
ml
--column-family
info
--hbase-row-key
movieID
--hbase-create-table
-m     //是否在不存在情况下创建表
1

执行配置文件

sqoop --options-file /opt/sqoopconf/conf2

数据导出成功

在这里插入图片描述

在hbase查看数据

在这里插入图片描述
(3)MYSQL查询评分值>4的结果,将结果导入HDFS数据
“结果截图”中hdfs中文件的前10行数据即可
head -10 文件名

【配置文件】

import
	--connect
	jdbc:mysql://localhost:3306/shopping
	--username
	root
	--password
	hadoop
	--target-dir
	hdfs://localhost:9000/sqoop1     //导出到hdfs的目标文件夹
	--delete-target-dir			//若目标用户已存在,删除它
	-m					#启动 Map 数量
	1
	--as-textfile 		//导入数据以文本格式存放在HDFS上
	--null-string
	' '
	--query   //选择要导出的数据(“and $CONDITIONS” 一定要带)
	"select * from ml3 where tating>4.0 and $CONDITIONS"

在这里插入图片描述

执行成功

在这里插入图片描述

查看hdfs里的文件

在这里插入图片描述
在这里插入图片描述
实验反思:
不同数据库之间要注意表与表之间的数据格式,格式不同会导致数据传输错误,还有注意分隔符,csv是用逗号分隔(要不就先别再数据库建表,直接在配置文件里写新建表)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值