使用SQOOP导入数据

时间:2020-02-23 14:33:33  来源:igfitidea点击:

准备使用SQOOP进口数据?
首先查看图中的图,该图示出了来自RDBMS或者数据仓库系统的典型SQOOP导入操作中的步骤。
这里没有什么太复杂 - 只有来自(典型)的虚构的典型产品数据表从典型的数据管理系统(DMS)导入典型的Apache Hadoop集群。

在步骤1期间,SQOOP使用适当的连接器从目标DMS检索产品表元数据。
(元数据用于将产品表中的数据类型映射到Java语言中的数据类型。
)

然后,步骤2使用此元数据生成并编译一个或者多个映射任务将使用的Java类来从产品表中导入实际行。
SQOOM将生成的Java类保存到Temp空间或者指定的目录,以便我们可以利用它以便随后处理数据记录。

为我们保存的SQOOP生成的Java代码就像是保持给予的礼物!使用此代码,SQOOP将从DMS导入记录,并使用我们可以选择的三种格式之一将其存储到HDFS:二进制AVRO数据,二进制序列文件或者分隔文本文件中的三个格式。
之后,此代码可供我们使用后续数据处理。

如果我们正在导入二进制数据类型,则序列文件是自然的选择,并且我们需要生成的Java类以稍后序列化和反序列化数据 - 或者许要用于MapReduce处理或者导出。
Avro数据 - 基于Apache自己的序列化框架 - 如果需要在导入到HDFS之后需要与其他应用程序交互。

如果我们选择以分隔的文本格式存储导入的数据,则可以在解析新数据上以后找到生成的Java代码,并在新数据上执行数据格式转换。
我们将看到生成的代码还可以在SQOOP导入操作之后合并数据集,并且生成的Java代码可以在处理分隔文本数据时帮助避免歧义。

最后,在步骤3期间,SQOOM划分在许多映射任务中的产品表中的数据记录(具有用户可选择指定的映射器的数量)并将表数据导入HDFS,Hive或者HBase。