999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Sqoop數(shù)據(jù)收集與入庫(kù)系統(tǒng)的應(yīng)用

2017-12-22 07:35:40作者楊彬遼寧行政學(xué)院
電子制作 2017年21期
關(guān)鍵詞:數(shù)據(jù)庫(kù)作業(yè)方法

作者/楊彬,遼寧行政學(xué)院

Sqoop數(shù)據(jù)收集與入庫(kù)系統(tǒng)的應(yīng)用

作者/楊彬,遼寧行政學(xué)院

大多數(shù)情況下單位或組織有價(jià)值的數(shù)據(jù)都要存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)中,隨著時(shí)間的累計(jì),數(shù)據(jù)量已非常龐大,為了進(jìn)一步進(jìn)行處理,有些數(shù)據(jù)需要抽取出來(lái),利用大數(shù)技術(shù)進(jìn)行處理再次加工。為了能夠和Hadoop HDFS系統(tǒng)之外的數(shù)據(jù)庫(kù)系統(tǒng)機(jī)型交互,Sqoop孕育而生。Sqoop 是一款開(kāi)源的工具,是Apache頂級(jí)項(xiàng)目,通過(guò)JDBC和關(guān)系數(shù)據(jù)庫(kù)進(jìn)行交互,用戶可將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫(kù)抽取到Hadoop HDFS中;也可以把hadoop MapReduce處理完的數(shù)據(jù)導(dǎo)回到關(guān)系數(shù)據(jù)庫(kù)中。

數(shù)據(jù)導(dǎo)入;數(shù)據(jù)導(dǎo)出;JDBC;關(guān)系數(shù)據(jù)庫(kù)

1. Sqoop架構(gòu)

Sqoop架構(gòu)非常簡(jiǎn)單,整合了Hive、Hbase和Oozie,通過(guò)hadoop 的MapReduce任務(wù)來(lái)傳輸數(shù)據(jù)并提供并發(fā)和容錯(cuò)功能。Sqoop接收到客戶端的shell命令或者Java api命令后,通過(guò)Sqoop中的任務(wù)翻譯器把命令轉(zhuǎn)換為對(duì)應(yīng)的MapReduce任務(wù),將關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)和Hadoop HDFS中的數(shù)據(jù)進(jìn)行相互轉(zhuǎn)移,進(jìn)而完成數(shù)據(jù)導(dǎo)入和數(shù)據(jù)導(dǎo)入導(dǎo)出。Sqoop架構(gòu)如圖1所示。

圖1 Sqoop架構(gòu)

2. Sqoop數(shù)據(jù)庫(kù)導(dǎo)入與使用

■2.1 Sqoop數(shù)據(jù)庫(kù)導(dǎo)入

Sqoop是通過(guò)一個(gè)MapReduce作業(yè)從關(guān)系數(shù)據(jù)庫(kù)中導(dǎo)入一個(gè)表,抽取一行行記錄,然后寫入到HDFS。首先Sqoop使用JDBC來(lái)檢查將要導(dǎo)入的表并檢索出表中所有的列及其對(duì)應(yīng)的SQL數(shù)據(jù)類型。這些SQL類型被映射到Java數(shù)據(jù)類型中,這些對(duì)應(yīng)的java類型在MapReduce應(yīng)用中將被作為字段值被保存,這些信息被Sqoop的代碼生成器使用來(lái)創(chuàng)建對(duì)應(yīng)表的類,用于保存從表中抽取的記錄。在導(dǎo)入中,關(guān)鍵的是DBWritable接口的序列化方法,Widget類和JDBC進(jìn)行交互使用這些方法。

JDBC的ResultSet接口提供用戶從檢查結(jié)果中檢索記錄的游標(biāo),readFields()方法將用ResultSet中一行數(shù)據(jù)的列來(lái)填充Example對(duì)象的字段。其格式如下:

Public void readFields(resultSet _dbResults)throws SQLException;

InputFormat()方法通過(guò)JDBC從一個(gè)數(shù)據(jù)庫(kù)表中讀取部分內(nèi)容,它通過(guò) Sqoop啟動(dòng)MapReduce作業(yè)來(lái)完成。

DataDriverDBInputFormat()方法能夠完成多個(gè)Map任務(wù)對(duì)查詢結(jié)果的劃分,為了提高導(dǎo)入性能,查詢根據(jù)表的主鍵我的做為“劃分列”來(lái)進(jìn)行劃分的。在配置InputFormat之后,Sqoop將作業(yè)發(fā)送到MapReduce集群。Map任務(wù)將執(zhí)行查詢并將ResultSet中的數(shù)據(jù)反序列化到生成類的實(shí)例,這些數(shù)據(jù)保存在SequenceFile文件中也可以被分割為多個(gè)文本文件。導(dǎo)入指令為:Sqoop import –connect jdbc:mysql://hostname:port/database –username root –password 123456 –tablename –m n。

其構(gòu)成含義如下:

(1)––co n n e c t j d b c:m y s q l://hostname:port/database指定mysql數(shù)據(jù)庫(kù)主機(jī)名和端口號(hào)和數(shù)據(jù)庫(kù)名;

(2)––username root 指定數(shù)據(jù)庫(kù)用戶名;

(3)––password 123456 指定數(shù)據(jù)庫(kù)密碼;

(4)––tablename 導(dǎo)出的表名;

(5)–m n 啟動(dòng)一個(gè)map進(jìn)程數(shù),如果表很大,可以啟動(dòng)多個(gè)map進(jìn)程。

默認(rèn)情況下,Sqoop會(huì)將導(dǎo)入的數(shù)據(jù)保存為逗號(hào)分隔的文本文件。

Sqoop從關(guān)系數(shù)據(jù)庫(kù)中導(dǎo)入到HDFS的過(guò)程,如圖2所示。

具體操作實(shí)例如下:關(guān)系數(shù)據(jù)庫(kù)(10.8.218.89)表為base,執(zhí)行Sqoop命令將數(shù)據(jù)從mysql導(dǎo)入到hive中,具體命令為:

Sqoop import ––connect jdbc:mysql://10.8.218.89:3208/dbvideo ––table base ––user root––password 123456 –m 1 ––hive–import ––hive–database dbvideo ––hive–table base ––hive–overwrite ––fields–ter–minated–by “ ”––lines–terminated–by “ ”––as–textf i le

通過(guò)help指令查看sqoop導(dǎo)入幫助: Sqoop help import。

圖2 Sqoop從數(shù)據(jù)庫(kù)中導(dǎo)入到HDFS的過(guò)程

■2.2 Sqoop導(dǎo)入數(shù)據(jù)的使用

數(shù)據(jù)被導(dǎo)入HDFS,以文本格式數(shù)據(jù)可以供Hadoop Streaming中的腳本使用,也可以為TextInputFormat為默認(rèn)格式運(yùn)行的MapReduce作業(yè)使用。同時(shí)Sqoop和Hive可共同構(gòu)成一個(gè)強(qiáng)大的服務(wù)用于分析任務(wù),在進(jìn)行導(dǎo)入時(shí),Sqoop可以生成hive表,將數(shù)據(jù)導(dǎo)入hive表,其命令如下:

Sqoop import –connect jdbc:mysql://localhost/ha–doopguide –table widgets –m 1 –hive–import

3. Sqoop數(shù)據(jù)庫(kù)導(dǎo)出

■3.1 Sqoop數(shù)據(jù)庫(kù)導(dǎo)出

Sqoop導(dǎo)出功能其導(dǎo)入功能非常相似,在執(zhí)行導(dǎo)出操作之前,Sqoop一般使用jdbc連接數(shù)據(jù)庫(kù)并選擇一個(gè)導(dǎo)出方法,Sqoop會(huì)根據(jù)目標(biāo)表的定義生成一個(gè)java類,通過(guò)這個(gè)生成類從文本文件中解析記錄,接著會(huì)啟動(dòng)一個(gè)MapReduce作業(yè),從HDFS中讀取源數(shù)據(jù)文件,使用生成的類解析記錄,執(zhí)行選定的導(dǎo)出方法。jdbc的導(dǎo)出方法會(huì)產(chǎn)生一批insert語(yǔ)句,每條語(yǔ)句都會(huì)向目標(biāo)表中插入多條記錄。

Sqoop還可以將存儲(chǔ)在SequenceFile中的記錄導(dǎo)出到輸出表。Sqoop從SequenceFile中讀取對(duì)象,發(fā)送到OutputCollector,由它將這些對(duì)象傳遞給數(shù)據(jù)庫(kù)導(dǎo)出OutputFormat(),由OutputFormat()完成輸出到表的過(guò)程。Sqoop從HDFS導(dǎo)出到關(guān)系數(shù)據(jù)庫(kù)的過(guò)程,如圖3所示

圖3 Sqoop從HDFS導(dǎo)出到關(guān)系數(shù)據(jù)庫(kù)的過(guò)程

■3.2 Sqoop導(dǎo)出數(shù)據(jù)的執(zhí)行

在Sqoop中,導(dǎo)出的數(shù)據(jù)源是HDFS,關(guān)系數(shù)據(jù)庫(kù)作為目標(biāo)。在將一張表從HDFS導(dǎo)出到關(guān)系數(shù)據(jù)庫(kù)時(shí),須在關(guān)系數(shù)據(jù)庫(kù)中創(chuàng)建一張用于接收數(shù)據(jù)的目標(biāo)表。執(zhí)行過(guò)程如下:

①先在mysql中創(chuàng)建一個(gè)具有相同序列順序的sql目標(biāo)表

Create table sales(volume decimal(10,2),zip inte ger);

②接著運(yùn)行導(dǎo)出命令:

Sqoop export –connect jdbc:mysql://localhost/ha doopguide –m 1 –table sales –export–dir /user/hive/zip_prof i ts –input–f i elds–terminated–by “

主站蜘蛛池模板: 不卡视频国产| 激情成人综合网| 精品视频第一页| 国产无码精品在线| 亚洲福利片无码最新在线播放| 国产免费人成视频网| 欧美亚洲国产精品第一页| 国产成人永久免费视频| 另类专区亚洲| 四虎精品国产AV二区| 114级毛片免费观看| 国产精品香蕉| 国产亚洲一区二区三区在线| 亚洲伊人电影| 国产成人亚洲毛片| 日韩无码视频专区| 欧亚日韩Av| 中文字幕日韩欧美| 国产一区二区三区精品久久呦| 狠狠亚洲婷婷综合色香| 精品国产自在在线在线观看| 视频二区欧美| 99ri精品视频在线观看播放| 重口调教一区二区视频| 成年人午夜免费视频| 四虎影视库国产精品一区| 国产男女XX00免费观看| 国产精品亚洲专区一区| 亚洲AV无码乱码在线观看裸奔| 亚洲国产天堂在线观看| 永久免费无码成人网站| 欧美区一区二区三| 亚洲人成人无码www| 亚洲国产精品不卡在线| 精品伊人久久久久7777人| 91在线免费公开视频| 国产另类视频| 国产在线一区二区视频| 91年精品国产福利线观看久久| 国产精品青青| 成年网址网站在线观看| 一级成人欧美一区在线观看| 91九色国产在线| 日本黄网在线观看| 天天躁狠狠躁| 91精品久久久久久无码人妻| 免费一级无码在线网站 | 美女高潮全身流白浆福利区| 久久人妻系列无码一区| 国产精品lululu在线观看| 欧美日韩中文国产| 中文字幕在线日本| 久久综合色88| 欧美啪啪网| 国产美女久久久久不卡| 18禁影院亚洲专区| 久久香蕉国产线看观看亚洲片| 国产精品第| 国产精品一区二区不卡的视频| 在线观看精品自拍视频| 日韩黄色精品| 好吊色妇女免费视频免费| 国产日产欧美精品| 人人爽人人爽人人片| 国产交换配偶在线视频| 亚洲日韩日本中文在线| 国产丝袜第一页| 欧美黑人欧美精品刺激| 国产人成在线视频| 国产一级无码不卡视频| 91年精品国产福利线观看久久| 国产a v无码专区亚洲av| 91精品国产无线乱码在线| 久久香蕉国产线看观看式| 免费看a级毛片| 天堂中文在线资源| 本亚洲精品网站| 97se亚洲| Jizz国产色系免费| 国产人人乐人人爱| 成人免费视频一区二区三区| 伊人久热这里只有精品视频99|