利用sqoop将MySQL数据导入HDFS、Hive、HBase

准备MySQL数据

登录MySQL数据库
mysql -u root -p123456;
创建student数据库
create database student;
切换数据库并导入数据
# mysql shell中执行
use student;


​#/root/student.sql为student.sql在虚拟机上的绝对路径
#studnet.sql和score.sql是提前下载在虚拟机上的
source /root/student.sql;
source /root/score.sql;

注:该文件格式为.sql!若为txt文件,在导入数据前一定要先建好表,导入数据时还要定义列分割符否则会出现null的情况。

另外一种导入数据的方式

# linux shell中执行
mysql -u root -p123456 student</root/student.sql
mysql -u root -p123456 student</root/score.sql
导出MySQL数据库
mysqldump -u root -p123456 数据库名>任意一个文件名.sql

import

从传统的关系型数据库导入HDFS、HIVE、HBASE......

MySQLToHDFS

MySQL导入hdfs

在虚拟机本地上编写脚本,保存为MySQLToHDFS.conf
vim MySQLToHDFS.conf
import
--connect
jdbc:mysql://master:3306/student
--username
root
--password
123456
--table
student
--m
2
--split-by
age
--target-dir
/sqoop/data/student     
--fields-terminated-by
','
执行脚本
sqoop --options-file MySQLToHDFS.conf

此处的MySQLToHDFS.conf为相对路径,在执行脚本时要在文件MySQLToHDFS.conf所在的目录下执行。执行后的文件保存在hdfs上的/sqoop/data/student 目录下利用命令hadoop fs -ls /sqoop/data/student查看

MySQLToHive

编写脚本,并保存为MySQLToHive.conf文件
import
--connect
jdbc:mysql://master:3306/student
--username
root
--password
123456
--table
score
--fields-terminated-by
"\t"
--lines-terminated-by
"\n"
--m
2
--split-by
student_id
--hive-import
--hive-overwrite
--create-hive-table
--hive-database
testsqoop
--hive-table
score

hive里要提前创建好testsqoop数据库才可执行脚本

执行脚本
sqoop --options-file MySQLToHive.conf

MySQLToHive.conf仍为相对路径

--direct

加上这个参数,可以在导出MySQL数据的时候,使用MySQL提供的导出工具mysqldump,加快导出速度,提高效率

需要将master上的/usr/bin/mysqldump分发至 node1、node2的/usr/bin目录下

scp /usr/bin/mysqldump node1:/usr/bin/
scp /usr/bin/mysqldump node2:/usr/bin/
-e参数的使用
import
--connect
jdbc:mysql://master:3306/student
--username
root
--password
123456
--fields-terminated-by
"\t"
--lines-terminated-by
"\n"
--m
2
--split-by
student_id
--e
"select * from score where student_id=1500100011 and $CONDITIONS"
--target-dir
/testQ
--hive-import
--hive-overwrite
--create-hive-table
--hive-database
testsqoop
--hive-table
score2

MySQLToHBase

在HBase中提前创建好student表
#启动zk
zkServer.sh start 三台都需要执行
zkServer.sh status 查看状态
#启动HBase集群,在master执行
start-hbase.sh
 
#停掉hbase集群
#stop-hbase.sh
jps
#进入hbase的命令行
hbase shell
#在hbase里创建student表
create 'student','cf1'
编写脚本,保存为MySQLToHBase.conf

在虚拟机本地编写脚本

import
--connect
jdbc:mysql://master:3306/student
--username
root
--password
123456
--table
student
--hbase-table
student
--hbase-row-key
id
--m
1
--column-family
cf1
执行脚本
#在shell命令行与文件MySQLToHBase.conf同目录下执行
sqoop --options-file MySQLToHBase.conf

HDFSToMySQL

编写脚本,并保存为HDFSToMySQL.conf

export
--connect
jdbc:mysql://master:3306/student?useUnicode=true&characterEncoding=UTF-8
--username
root
--password
123456
-m
1
--columns
id,name,age,gender,clazz
--export-dir
/sqoop/data/student/
--fields-terminated-by
','
--table
student

先清空MySQLstudent表中的数据,不然会造成主键冲突

注:这是清空表,不是删除表

delete from 表名;
执行脚本
sqoop --options-file HDFSToMySQL.conf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值