更新時(shí)間:2022-09-23 來(lái)源:黑馬程序員 瀏覽量:
Sqoop導(dǎo)出與導(dǎo)入是相反的操作,也就是將HDFS、Hive、Hbase等文件系統(tǒng)或數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫(kù)中,在導(dǎo)出操作之前,目標(biāo)表必須存在于目標(biāo)數(shù)據(jù)庫(kù)中,否則在執(zhí)行導(dǎo)出操作時(shí)會(huì)失敗。而Hive、Hbase的數(shù)據(jù)通常都是以文件的形式存儲(chǔ)在HDFS中,因此,本節(jié)就重點(diǎn)講解如何將HDFS數(shù)據(jù)導(dǎo)出到MySQL中。
為了方便操作,這里就將10.4.1小節(jié)中導(dǎo)入到HDFS上/sqoopresult目錄下的結(jié)果文件part-m-00000進(jìn)行導(dǎo)出操作。首先在本地MySQL數(shù)據(jù)庫(kù)中(例如前面自定義的userdb數(shù)據(jù)庫(kù))提前創(chuàng)建目標(biāo)表結(jié)構(gòu),該表結(jié)構(gòu)需要與HDFS中的源數(shù)據(jù)結(jié)構(gòu)類(lèi)型一致,具體emp_export.sql語(yǔ)句如文件所示。
文件 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`) );
完成上面目標(biāo)表emp_export的創(chuàng)建工作后,接下來(lái)就將HDFS上/sqoopresult目錄下的part-m-00000文件進(jìn)行導(dǎo)出操作,具體指令示例如下。
$ sqoop export \ --connect jdbc:mysql://hadoop01:3306/userdb \ --username root \ --password 123456 \ --table emp_export \ **--export-dir /sqoopresult
執(zhí)行完指令后,進(jìn)入MySQL數(shù)據(jù)庫(kù),查看表emp_export的內(nèi)容,如圖1所示。
圖1 表emp_export
從圖1可以看出,使用Sqoop成功將HDFS的數(shù)據(jù)導(dǎo)出到MySQL數(shù)據(jù)庫(kù)中。
Python中pass語(yǔ)句和else語(yǔ)句的用法分別是什么?
2022-09-23python中break語(yǔ)句和continue語(yǔ)句的區(qū)別-Python常用語(yǔ)句
2022-09-23Python培訓(xùn):python中while循環(huán)的用法
2022-09-23Python中rstrip函數(shù)和strip函數(shù)的用法-Python培訓(xùn)
2022-09-22python中l(wèi)just函數(shù)和rjust函數(shù)是什么?-Python培訓(xùn)
2022-09-22Python中count函數(shù)是什么意思?-Python培訓(xùn)
2022-09-22