Hadoop冷热数据转换工具Sqoop
Sqoop是Apache基金下的開源項(xiàng)目,目的是完成關(guān)系數(shù)據(jù)庫(kù)和Hadoop的轉(zhuǎn)化,實(shí)現(xiàn)雙向?qū)搿?/p>
通常的大型數(shù)據(jù)系統(tǒng)使用之實(shí)現(xiàn)較少,主要原因是因?yàn)槠湓贑DH3才開始支持,而且該方式是通過(guò)JDBC驅(qū)動(dòng),將數(shù)據(jù)庫(kù)進(jìn)行讀取,并將數(shù)據(jù)轉(zhuǎn)換至HDFS文件,通常會(huì)影響熱數(shù)據(jù)的使用。但是做為日常工作,需要轉(zhuǎn)換時(shí),還是會(huì)提供一些方便。
CDH3版本的Sqoop已經(jīng)默認(rèn)安裝了,其構(gòu)建在MapReduce之上,不同于直接拷貝,其通過(guò)JDBC驅(qū)動(dòng)連接實(shí)現(xiàn)hadoop和關(guān)系數(shù)據(jù)庫(kù)之間的通信。
在進(jìn)行sqoop前,需要把對(duì)應(yīng)的JDBC驅(qū)動(dòng)放到對(duì)應(yīng)的lib目錄。
sqoop命令參數(shù):
import ##表示導(dǎo)入數(shù)據(jù)
--connect jdbc:mysql://ip:3306/sqoop ##指定連接mysql的url
--username test ##連接mysql的用戶名
--password test1 ##連接mysql的密碼
--table weblogs ##從mysql導(dǎo)出的表名稱
--fields-terminated-by '\t' ##指定輸出文件中的行的字段分隔符
--m1 ##復(fù)制過(guò)程使用1個(gè)map作業(yè)
--target-dir /data/weblogs/import ##指定HDFS上存放的路徑
其中,username和password用于驗(yàn)證訪問(wèn)mysql的權(quán)限,必須在hadoop的用戶名中出現(xiàn)。
默認(rèn)情況下,導(dǎo)入的數(shù)據(jù)按照主鍵進(jìn)行分割,如果導(dǎo)入的表不包含主鍵,就用--split-by參數(shù)決定導(dǎo)入的數(shù)據(jù)如何分割。
Sqoop命令將轉(zhuǎn)化為mapreduce作業(yè),使用DBInputFormat,格式化查詢結(jié)果。因?yàn)槠溥M(jìn)行全表掃描,使用時(shí)需要謹(jǐn)慎。
總結(jié)
以上是生活随笔為你收集整理的Hadoop冷热数据转换工具Sqoop的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 先抗住,再优化
- 下一篇: ASP.NET Core开发常见“坑”