准备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