一个组织中有价值的数据都存储在关系型数据库系统等结构化存储器中。
Apache Sqoop是一个开源工具,他允许用户将数据从结构化存储器抽取到Hadoop中,用于进一步处理。一旦生成最终的分析结果,Sqoop可以将这些结果导回数据存储器,供其他客户端使用。
Sqoop拥有一个可扩展的框架,能够从(向)任何支持批量数据传输的外部存储系统导入(导出)数据。
一个Sqoop连接器就是这个框架下的一个模块化组件,用于支持Sqoop的导入和导出操作。
文本和二进制文件格式
Sqoop可以将数据导入成几种不同的格式。
文本文件(默认)是一种人类可读的数据表示形式,并且是平台独立和最简单的数据格式,不能保存二进制字段(如数据库中类型为VARBINARY的列),在区分NULL值和字符串NULL时可能会出现问题。处理这些情况,使用Sqoop的SequenceFile格式、Avro格式或Parquet文件。
二进制格式能够为导入的数据提供最精确的表示方式,还允许对数据进行压缩,并支持MapReduce并行处理同一文件的不同部分。
SequenceFile文件格式只支持Java语言,而Avro和Parquet数据文件可以被很多种语言处理。
生成代码
Sqoop除了能把数据库的数据写入HDFS,同时还会生成一个Java源文件,保存在当前的本地目录。