更新時間:2022-09-23 來源:黑馬程序員 瀏覽量:
Sqoop導出與導入是相反的操作,也就是將HDFS、Hive、Hbase等文件系統或數據倉庫中的數據導出到關系型數據庫中,在導出操作之前,目標表必須存在于目標數據庫中,否則在執(zhí)行導出操作時會失敗。而Hive、Hbase的數據通常都是以文件的形式存儲在HDFS中,因此,本節(jié)就重點講解如何將HDFS數據導出到MySQL中。
為了方便操作,這里就將10.4.1小節(jié)中導入到HDFS上/sqoopresult目錄下的結果文件part-m-00000進行導出操作。首先在本地MySQL數據庫中(例如前面自定義的userdb數據庫)提前創(chuàng)建目標表結構,該表結構需要與HDFS中的源數據結構類型一致,具體emp_export.sql語句如文件所示。
文件 emp_export.sql
DROP TABLE IF EXISTS `emp_export`; CREATE TABLE `emp_export` ( `id` int(11) NOT NULL, `name` varchar(100) DEFAULT NULL, `deg` varchar(100) DEFAULT NULL, `salary` int(11) DEFAULT NULL, `dept` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) );
完成上面目標表emp_export的創(chuàng)建工作后,接下來就將HDFS上/sqoopresult目錄下的part-m-00000文件進行導出操作,具體指令示例如下。
$ sqoop export \ --connect jdbc:mysql://hadoop01:3306/userdb \ --username root \ --password 123456 \ --table emp_export \ **--export-dir /sqoopresult
執(zhí)行完指令后,進入MySQL數據庫,查看表emp_export的內容,如圖1所示。
圖1 表emp_export
從圖1可以看出,使用Sqoop成功將HDFS的數據導出到MySQL數據庫中。