SQOOP入门
★ SQOOP入门
Sqoop提供的命令可以把RDMS管理的数据库中的数据导入到HDFS中或者Hive仓库中。
也提供了命令可以把HDFS中的数据导入到Mysql等REMS数据库中。
★ SQOOP安装
Sqoop依赖于Hadoop平台的Hdfs存储和MapReduce计算。
所以,安装Sqoop之前,需要安装好Hadoop。
1:解压、设置环境变量略。
2:把Mysql的驱动jar包,放到$SQOOP_HOME/lib目录下。
3:启动Hadoop
4:进入$SQOOP_HOME/bin目录下。执行下面的命令。
★ Mysql到HDFS存储
1:--导出到多个文件中。把数据库中的数据分散在多个文件中保存
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ',';
2:--导入到一个文件中,-m指定用一个Map。在不加 --apend的情况下,第二次执行该导入会提示HDFS中文件已存在。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1;
3:--每次执行,都会新创建一个文件。原来的HDFS中的文件还在HDFS中。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1 --append ;
★ Mysql到HIVE仓库
1:--没有用-m指定用一个Map。导出文件保存在了Hive仓库中。保存到仓库中几个分散的文件中。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by',' --hive-import;
2:--导入到一个文件中,-m指定用一个Map。导出文件保存在了Hive仓库中。每次执行都会把库中的所有数据保存到一个新的Hive仓库中的一个备份文件中。
sqoop import --connect jdbc:mysql://hadoop5:3306/test--username root --password root
--table persons --fields-terminated-by ','-m 1 --hive-import;
3:--导入到一个文件中,-m指定用一个Map。导出文件保存在了Hive仓库中。每次保存都会在数据仓库中保存一个新的备份。全部数据。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1 --hive-import --append;
4:--导入到一个文件中,-m指定用一个Map。导出文件保存在了Hive仓库中。每次导出都会保存到一个单独的文件中,保存的时候,只保存增量。如果没有增量,则生成一个新文件。里边没有内容。
sqoop import --connectjdbc:mysql://hadoop5:3306/test --username root --password root
--table persons --fields-terminated-by ','-m 1 --hive-import --append
--check-column 'id' --incremental append--last-value 6;
★ HDFS到Mysql
在数据库中建表:
/*DDL 信息*/------------
CREATE TABLE `people` (
`id` int(10) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`age` int(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
在HDFS中准备文件:
文件内容如下:
1,baidu,4
2,sohu,40
3,xiaomi,20
4,alibaba,108
5,taobao,29
6,tmall,32
导出数据到Mysql中刚才建的表中
[root@hadoop5 bin]# pwd
/usr/local/sqoop/bin
执行命令:
sqoop export --connectjdbc:mysql://hadoop5:3306/test --username root --password root --table people --fields-terminated-by',' --export-dir '/exppersons'
上句命令表示:把HDFS中的文件内容导入到Mysql中。
导入文件位于/exppersons文件夹中。
导入到test数据库中的people表中。要求表已经生成。
★ Sqoop的Job管理
创建一个新的Job:
sqoop job --create ajob -- import --connectjdbc:mysql://hadoop5:3306/test --username root --password root --table persons--fields-terminated-by ',' -m 1 --hive-import;
查看所有的可用的Job:
sqoop job --list
删除一个Job
sqoop job --delete