1.概念了解
sqoop主要用于hadoop与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如:MYSQL,Oracle,Postgrep等)中的数据导到hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
2.sqoop的安装
(1)将压缩包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.jar放在Linux的路径下,并修改配置文件/etc/profile
export SQOOP_HOME=该压缩包所在路径
export PATH=$PATH:$SQOOP_HOME/bin
(2)更新环境变量的值
source /etc/profile
检验是否安装成功:输入sqoop ,显示提示说明安装成功。
(3)下载mysql的连接jar包,放在sqoop的家目录的lib目录下。
安装后验证:
sqoop list-databases --connect jdbc:mysql://本地IP:3306/ --username root --password root123
若显示数据库,说明安装完成。
3.sqoop的使用
sqoop支持很多对数据库的操作,比如查看数据库,查看数据表,对数据的导入导出,导入所有的表。当然用的最多的还是export和import两个指令对数据库和hadoop数据进行导出导入。
(1)利用sqoop数据从mysql中导入到hdfs
现在数据库中建立一个employee的表,字段有id,name,age,place,entry_time,position
,然后再填充一些数据。
运行命令格式:sqoop import --connect jdbc:mysql://本地IP:3306/数据库name --username root --password 123456 --table 表名--target-dir hdfs中的路径 -m 1
sqoop import --connect jdbc:mysql://master:3306/liu --username root --password 123456 --table employees --target-dir /input/sqoop/sqoop_employees -m 1
需要注意的是:要导入到hdfs中的目录不能提前存在。
(2)将数据从hdfs导出到mysql中
将hdfs中的数据/input/f.txt导入到数据库中:
执行命令格式:
#sqoop export --connect jdbc:mysql://本地IP地址:3306/数据库名字 --username root --table 表格的名字 --export-dir ‘hdfs中的路径‘ --fields-terminated-by ‘,‘
#sqoop export --connect jdbc:mysql://192.168.59.128:3306/db01 --username root --password linux --table table03 --export-dir ‘/input/f.txt‘ --fields-terminated-by ‘,‘
其中数据库db01,table03都是提前存在的,并且table03的属性是对应hdfs中的数据的。