sqoop基本知识
sqoop产生背景
最早 数据存储是基于传统关系型数据库。随着数据量增长,传统的数据存储方式无法满足需求,换一种新的存储策略。 hdfs 分布式存储 应运而生。但传统的关系型数据库(mysql /oracle)里所存储的数据, 需要迁移到大数据平台。sqoop应运而生。sqoop 是 apache 旗下一款Hadoop 和关系数据库服务器之间传送数据的工具。
sqoop是什么
sqoop是做数据迁移的。本质还是一个命令行工具,和 HDFS, Hive 相比,并没有什么高深的理论。
数据导入的方向
如果以大数据平台为中心
数据迁入 import: 是指将数据从 mysql或oracle 平台迁移到 hadoop平台。
数据迁出 export: 是指将数据从 hadoop平台迁移到 mysql或oracle 平台。
eg:hive 数据分析的结果,如果要进行可视化展示,一般存入mysql中。
广义hadoop平台包括:hdfs、hive、hbase
sqoop的工作机制
sqoop工作的本质是:将sqoop命令转换为mapreduce任务。在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制。
- sqoop的数据迁入:从mysql读取数据,将数据输出到hdfs / hive /hbase 等。
map端:
普通的mr,数据输入,使用 FileInputFormat:只能针对文本进行读取。
map:LongWritable
key:Text
因为是从masql读取,因此需要重新定义输入:
使用DBInputFormat:将数据库的数据, 一行一行的读取过来
map() {直接输出},不再需要reduce()
数据迁入的本质,相当于重新定义了数据输入类(使用DBInputFormat),在运行过程中,只需要maptask。
- sqoop的数据迁出:将数据从hdfs迁出到mysql
map端:
输入不用变,依然使用 FileInputFormat: 一行一行地读取数据
map(){
将数据输出到mysql中
重新定义 OutputFormat(使用DBOutputFormat)
}
数据的迁出,相当于重新定义了OUTPUTFORMAT,只需要maptask。