学科分类
目录
Hadoop技术栈

Sqoop数据导出

Sqoop导出与导入是相反的操作,也就是将HDFS、Hive、Hbase等文件系统或数据仓库中的数据导出到关系型数据库中,在导出操作之前,目标表必须存在于目标数据库中,否则在执行导出操作时会失败。而Hive、Hbase的数据通常都是以文件的形式存储在HDFS中,因此,本节就重点讲解如何将HDFS数据导出到MySQL中。

为了方便操作,这里就将10.4.1小节中导入到HDFS上/sqoopresult目录下的结果文件part-m-00000进行导出操作。首先在本地MySQL数据库中(例如前面自定义的userdb数据库)提前创建目标表结构,该表结构需要与HDFS中的源数据结构类型一致,具体emp_export.sql语句如文件所示。

文件 emp_export.sql

 1  DROP TABLE IF EXISTS `emp_export`;

 2  CREATE TABLE `emp_export` (

 3   `id` int(11) NOT NULL,

 4   `name` varchar(100) DEFAULT NULL,

 5   `deg` varchar(100) DEFAULT NULL,

 6   `salary` int(11) DEFAULT NULL,

 7   `dept` varchar(10) DEFAULT NULL,

 8   PRIMARY KEY (`id`)

 9  );

完成上面目标表emp_export的创建工作后,接下来就将HDFS上/sqoopresult目录下的part-m-00000文件进行导出操作,具体指令示例如下。

$ sqoop export \

--connect jdbc:mysql://hadoop01:3306/userdb \

--username root \

--password 123456 \

--table emp_export \

**--export-dir /sqoopresult

上述数据导出的操作指令与10.4.1小节所示的导入指令基本相同,主要是将其中的导入目录参数“--target-dir”改为了导出目录参数“--export-dir”。

执行完指令后,进入MySQL数据库,查看表emp_export的内容,如图1所示。

img

图1 表emp_export

从图1可以看出,使用Sqoop成功将HDFS的数据导出到MySQL数据库中。

需要说明的是,本章教材对Sqoop工具的安装配置和基本使用进行了详细讲解,而Sqoop还支持更多类型的数据导入与导出功能。有兴趣的读者可以参考Sqoop官方文档,具体地址http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html

点击此处
隐藏目录