Apache Sqoop Cookbook 英文版-翻译学习!!
更多信息https://blue-shadow.top/
导出数据
前三章有一个共同点:它们描述了将数据从数据库服务器传输到Hadoop生态系统的各种用例。
如果有相反的情况, 并且需要将生成的、处理的或备份的数据从Hadoop传输到数据库。Sqoop提供了在这些
情况下的工具。
5.1从hadoop导出数据
问题
在Hadoop集群有Hive和MapReduce作业生成数据流,这些数据流生成的数据,传输到关系数据库,以便更容易查询。
解决方案
可以使用Sqoop的导出功能,将数据从Hadoop生态系统中将数据导出到关系型数据库中。举例来说,从
export-dir 目录下的cities到导入到表cities中,可以使用以下的命令:
sqoop export \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--export-dir cities
讨论
导出工作和导入相似,除了传输数据的方向不一样外。从关系数据库中导入数据使用SELECT,而从Sqoop中导出时
使用Insert。Sqoop的导出工作流和导入有细微的差异。在执行Sqoop时,sqoop会连接关系数据库,获取表的元数据
信息,包括表中的所有的列与它们的类型。通过这个元数据信息,Sqoop生成和变异java类,这个生成的java类用于
被提交的MapReduce作业,这个作业将会被用于导出数据。像导入模式一样,Sqoop不进行任何的数据的传输,所有的
传输工作都是通过MapReduce作业,Sqoop只是在中间起监督的作用。
Sqoop在获取表的元数据的时候,在关系数据库中的目标表必先事先存在。这张表中可以已经存储数据,甚至可以
从Hadoop中反复的导出数据到表中,唯一需要注意的是在Insert时,没有约束限制。