首頁技術(shù)文章正文

如何將HDFS數(shù)據(jù)導(dǎo)出到MySQL中?

更新時(shí)間:2022-09-23 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

Sqoop導(dǎo)出與導(dǎo)入是相反的操作,也就是將HDFS、Hive、Hbase等文件系統(tǒng)或數(shù)據(jù)倉庫中的數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫中,在導(dǎo)出操作之前,目標(biāo)表必須存在于目標(biāo)數(shù)據(jù)庫中,否則在執(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ù)庫中(例如前面自定義的userdb數(shù)據(jù)庫)提前創(chuàng)建目標(biāo)表結(jié)構(gòu),該表結(jié)構(gòu)需要與HDFS中的源數(shù)據(jù)結(jié)構(gòu)類型一致,具體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`)
  );

完成上面目標(biāo)表emp_export的創(chuàng)建工作后,接下來就將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ù)庫,查看表emp_export的內(nèi)容,如圖1所示。

1663926546119_111.jpg

圖1 表emp_export

從圖1可以看出,使用Sqoop成功將HDFS的數(shù)據(jù)導(dǎo)出到MySQL數(shù)據(jù)庫中。


分享到:
在線咨詢 我要報(bào)名
和我們在線交談!