本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)處理設(shè)備、方法和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
::大數(shù)據(jù)處理中,數(shù)據(jù)更新是最常見的一種數(shù)據(jù)處理,hive(數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架)作為處理數(shù)據(jù)的最為常用的組件,由于其支持sql(結(jié)構(gòu)化查詢語(yǔ)言)或類sql而得到廣泛的應(yīng)用。然而,由于hive本身處理數(shù)據(jù)的單一,不支持對(duì)數(shù)據(jù)的去重操作,也就無法進(jìn)行數(shù)據(jù)的更新,導(dǎo)致單純應(yīng)用hive的數(shù)據(jù)庫(kù)不發(fā)有效的完成復(fù)雜結(jié)構(gòu)化數(shù)據(jù)的更新操作,處理流程復(fù)雜,維護(hù)成本高。技術(shù)實(shí)現(xiàn)要素:本發(fā)明要解決的技術(shù)問題在于如何解決現(xiàn)有技術(shù)中應(yīng)用hive組件的數(shù)據(jù)處理不支持去重操作,從而導(dǎo)致對(duì)數(shù)據(jù)的更新復(fù)雜,維護(hù)成本高的問題;針對(duì)該技術(shù)問題,提供一種數(shù)據(jù)處理設(shè)備,其特征在于,所述數(shù)據(jù)處理設(shè)備包括處理器、存儲(chǔ)器以及通信總線:所述通信總線用于實(shí)現(xiàn)處理器和存儲(chǔ)器之間的連接通信;所述處理器用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)處理程序,以實(shí)現(xiàn):確認(rèn)已部署的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和海杜普數(shù)據(jù)庫(kù);接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令;對(duì)所述第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表。可選的,所述對(duì)第一控制命令進(jìn)行解析,判斷是否包含預(yù)設(shè)字段,生成判斷結(jié)果包括:解析所述第一控制命令中,是否包含norepeat字段;所述判斷結(jié)果包括是或否;所述根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表包括:若判斷結(jié)果為是,則在所述數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中創(chuàng)建實(shí)體表與對(duì)應(yīng)的映射表,以及在所述海杜普數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)應(yīng)的索引表;如判斷結(jié)果為否,則直接在所述數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中創(chuàng)建實(shí)體表。可選的,所述根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表之后,所述處理器還用于執(zhí)行所述數(shù)據(jù)處理程序,以實(shí)現(xiàn):接收客戶端發(fā)送的添加和/或修改數(shù)據(jù)對(duì)應(yīng)的第二控制命令;在所述索引表中,查找是否存在與所述第二控制命令對(duì)應(yīng)的表的名稱;若是,則將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入所述實(shí)體表中??蛇x的,所述將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入所述實(shí)體表中包括:將所述待添加和/或修改的數(shù)據(jù)通過所述映射表保存至所述索引表中;在所述索引表中,通過所述待添加和/或修改的數(shù)據(jù)對(duì)對(duì)應(yīng)的表進(jìn)行更新;將更新后的所述索引表的內(nèi)容重寫入所述實(shí)體表中。本發(fā)明還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,所述一個(gè)或者多個(gè)程序可被一個(gè)或者多個(gè)處理器執(zhí)行,以實(shí)現(xiàn):確認(rèn)已部署的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和海杜普數(shù)據(jù)庫(kù);接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令;對(duì)所述第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表。本發(fā)明還提供一種基于分布式系統(tǒng)基礎(chǔ)架構(gòu)的數(shù)據(jù)處理方法,包括:確認(rèn)已部署的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和海杜普數(shù)據(jù)庫(kù);接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令;對(duì)所述第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表??蛇x的,所述對(duì)第一控制命令進(jìn)行解析,判斷是否包含預(yù)設(shè)字段,生成判斷結(jié)果包括:解析所述第一控制命令中,是否包含norepeat字段;所述判斷結(jié)果包括是或否;所述根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表包括:若判斷結(jié)果為是,則在所述數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中創(chuàng)建實(shí)體表與對(duì)應(yīng)的映射表,以及在所述海杜普數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)應(yīng)的索引表;如判斷結(jié)果為否,則直接在所述數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中創(chuàng)建實(shí)體表??蛇x的,在所述根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表之后,還包括:接收客戶端發(fā)送的添加和/或修改數(shù)據(jù)對(duì)應(yīng)的第二控制命令;在所述索引表中,查找是否存在與所述第二控制命令對(duì)應(yīng)的表的名稱;若是,則將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入所述實(shí)體表中??蛇x的,所述將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入所述實(shí)體表中包括:將所述待添加和/或修改的數(shù)據(jù)通過所述映射表保存至所述索引表中;在所述索引表中,通過所述待添加和/或修改的數(shù)據(jù)對(duì)對(duì)應(yīng)的表進(jìn)行更新;將更新后的所述索引表的內(nèi)容重寫入所述實(shí)體表中。可選的,在所述接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令之前,還包括:接收所述客戶端發(fā)送的密鑰,并通過所述密鑰對(duì)所述客戶端進(jìn)行鑒權(quán);鑒權(quán)通過后,允許所述客戶端發(fā)送命令。有益效果本發(fā)明提供了一種數(shù)據(jù)處理設(shè)備、方法和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),確認(rèn)已部署的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和海杜普數(shù)據(jù)庫(kù),接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果,根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表。通過本發(fā)明的實(shí)施,通過海杜普數(shù)據(jù)庫(kù)的應(yīng)用,以及在創(chuàng)建時(shí)判斷是否需要去重,從而為數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中的實(shí)體表的數(shù)據(jù)更新提供了便利,減小了維護(hù)成本。附圖說明下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,附圖中:圖1為本發(fā)明第一實(shí)施例提供的數(shù)據(jù)處理裝置的組成示意圖;圖2為本發(fā)明第一實(shí)施例提供的各單元交互關(guān)系示意圖;圖3為本發(fā)明第二實(shí)施例提供的數(shù)據(jù)處理方法流程圖;圖4為本發(fā)明第三實(shí)施例提供的數(shù)據(jù)處理設(shè)備組成示意圖。具體實(shí)施方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。第一實(shí)施例參照?qǐng)D1,圖1為本發(fā)明第一實(shí)施例提供的基于hadoop(分布式系統(tǒng)基礎(chǔ)架構(gòu))數(shù)據(jù)處理裝置組成示意圖。本實(shí)施例中的數(shù)據(jù)處理裝置,包括:確認(rèn)模塊101,用于確認(rèn)已部署的hive(數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架)和hbase(海杜普數(shù)據(jù)庫(kù));接收模塊102,用于接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令;解析模塊103,用于對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;處理模塊104,用于根據(jù)判斷結(jié)果對(duì)應(yīng)的在hive和/或hbase中創(chuàng)建表。本實(shí)施例涉及服務(wù)端、客戶端、以及hive組件,hbase組件等等單元,其中各單元之間的交互所用的方式不盡相同,請(qǐng)參考圖2,圖2示出了本實(shí)施例的各個(gè)單元之間的交互關(guān)系。hadoop,即分布式系統(tǒng)基礎(chǔ)架構(gòu),他可以使得用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。而hive和hbase都是hadoop的一種應(yīng)用子項(xiàng)目,其中:hive是基于hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供簡(jiǎn)單的sql查詢功能,可以將sql語(yǔ)句轉(zhuǎn)換為mapreduce(映射歸約)任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類sql語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的mapreduce統(tǒng)計(jì),不必開發(fā)專門的mapreduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。其缺陷,在于無法區(qū)分相同的表和數(shù)據(jù),換言之,無法對(duì)指定的表進(jìn)行更新操作。hbase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),其可以非常簡(jiǎn)易的對(duì)數(shù)據(jù)進(jìn)行更新。不同于hive,hbase并不適用于sql語(yǔ)句查詢。在本實(shí)施例中,確認(rèn)模塊101用于確認(rèn)已部署的hive和hbase。這兩個(gè)數(shù)據(jù)庫(kù)可以整合為一個(gè)組件,一般部署在服務(wù)器上。該組件分別包括服務(wù)端和客戶端。服務(wù)端主要完成與hbase,hive的結(jié)構(gòu)的調(diào)用,完成創(chuàng)建、刪除、執(zhí)行sql語(yǔ)句等功能。客戶端則在遠(yuǎn)程進(jìn)行對(duì)服務(wù)端的遠(yuǎn)程調(diào)用,用戶可以通過運(yùn)行殼黃栓在命令行中完成操作,無需直接操作服務(wù)端,就可以完成所需的數(shù)據(jù)的寫入、更新等過程。此外,在本實(shí)施例中,還可以集成客戶端至項(xiàng)目中,然后通過在代碼中調(diào)用客戶端的接口api,從而實(shí)現(xiàn)對(duì)服務(wù)端的遠(yuǎn)程調(diào)用。在本實(shí)施例中,接收模塊102用于接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令。客戶端通過發(fā)送控制命令實(shí)現(xiàn)對(duì)服務(wù)端中的數(shù)據(jù)的寫入、更新、刪除等操作,也就是實(shí)現(xiàn)對(duì)服務(wù)端的控制;客戶端與服務(wù)端通過rpc(遠(yuǎn)程過程調(diào)用協(xié)議)進(jìn)行交互。在正式交互之前,也就是客戶端向服務(wù)端進(jìn)發(fā)送第一控制命令,進(jìn)而進(jìn)行數(shù)據(jù)處理之前,一般都需要進(jìn)行鑒權(quán)操作。本實(shí)施例還可以包括鑒權(quán)模塊105,用于接收客戶端發(fā)送的密鑰,并通過密鑰對(duì)客戶端進(jìn)行鑒權(quán);鑒權(quán)通過后,允許客戶端發(fā)送命令。為了保證系統(tǒng)的安全,避免其他非本數(shù)據(jù)處理系統(tǒng)的其他客戶端發(fā)送命令對(duì)服務(wù)端中的數(shù)據(jù)進(jìn)行惡意篡改,還通過鑒權(quán)模塊105,對(duì)客戶端的權(quán)限進(jìn)行鑒定。具體的,在進(jìn)行鑒權(quán)之前,服務(wù)端和客戶端會(huì)根據(jù)實(shí)際權(quán)限,為各個(gè)客戶端分配確定的密鑰,這個(gè)密鑰對(duì)于不同的,且都具有權(quán)限的客戶端而言可以相同,也可以不同,但是對(duì)于不具備權(quán)限的客戶端則無從知曉密鑰的內(nèi)容。在進(jìn)行鑒權(quán)時(shí),服務(wù)端接收客戶端所發(fā)送的,分配給客戶端的密鑰,來對(duì)客戶端進(jìn)行鑒權(quán),鑒權(quán)的具體過程可以包括:將該密鑰與預(yù)存在服務(wù)端的,符合鑒權(quán)要求的密鑰進(jìn)行比對(duì),若比對(duì)結(jié)果為滿足要求,則輸出鑒權(quán)通過的結(jié)果,即該客戶端的具有管理服務(wù)端的權(quán)限。其中,比對(duì)結(jié)果滿足要求可以是,客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰一致,或者客戶端提供的密鑰,與服務(wù)端預(yù)存的密鑰匹配,這個(gè)匹配可以結(jié)合客戶端的標(biāo)識(shí),如mac地址,ip地址等等,匹配的含義則可以包括客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰的組合滿足預(yù)設(shè)規(guī)則等等。具體的,鑒權(quán)模塊105對(duì)客戶端的鑒權(quán)方式可以根據(jù)具體的應(yīng)用場(chǎng)景選擇合適的方式,本實(shí)施例并不對(duì)其進(jìn)行具體的限定??蛻舳怂l(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,所指的是,該第一控制命令對(duì)應(yīng)于創(chuàng)建表,或者修改表。創(chuàng)建表和修改表的命令都是針對(duì)hive而言的,即客戶端所要進(jìn)行的控制是在hive中創(chuàng)建或者修改表。在hive中創(chuàng)建的表里,實(shí)體表可供用戶查詢數(shù)據(jù),映射表則是與實(shí)體表對(duì)應(yīng)的表,可以幫助實(shí)體表進(jìn)行更新操作??蛻舳怂l(fā)送的第一控制命令是通過rpc發(fā)送的,由于hive可直接通過sql查詢,因此,第一控制命令在服務(wù)端也以sql方式進(jìn)行傳遞。在本實(shí)施例中,解析模塊103用于對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果。解析第一控制命令,就是解析通過sql方式傳遞的第一控制命令中所包含的語(yǔ)句。判斷是否需要去重,則是指即將創(chuàng)建的表,是否需要進(jìn)行去重的操作。簡(jiǎn)而言之,在hive中創(chuàng)建的表中,并不是所有的表都是需要對(duì)同樣的數(shù)據(jù)進(jìn)行區(qū)分的,有的表允許有重復(fù)的數(shù)據(jù),也就是不需要進(jìn)行更新操作,而有的表,則需要進(jìn)行更新操作,對(duì)于需要進(jìn)行更新操作的表,就是需要進(jìn)行去重的表,即去掉重復(fù)的表,保留更新后的表。在本實(shí)施例中,通過第一控制命令來區(qū)分,創(chuàng)建的表是否需要進(jìn)行去重操作。在一些可行的實(shí)施例中,可以通過在第一控制命令中添加norepeat字段與否,來判定是否需要進(jìn)行去重操作。norepeat,即無重復(fù),表示需要去重,而如果沒有添加這個(gè)字段,則表示無需去重。例如,具體的一種實(shí)現(xiàn)方式是:如果sql語(yǔ)句中包括字段:create[norepeat]tabletable_name…,則說明待創(chuàng)建的表是需要去重的表。值得一提的是,采用這種方式僅僅是本實(shí)施例中一個(gè)可行的方案,實(shí)際上完全可以采用其他方式進(jìn)行,比如將norepeat字段替換成update等等其他字段,或者僅僅是一個(gè)簡(jiǎn)單的標(biāo)記,只要能夠?qū)⑷ブ睾筒蝗ブ氐拇齽?chuàng)建的表進(jìn)行區(qū)分即可。進(jìn)一步的,在本實(shí)施例中,解析模塊103還可以用于:解析第一控制命令中,是否包含norepeat字段;判斷結(jié)果包括是與否。也就是說,由于客戶端發(fā)送的第一控制命令中,通過添加norepeat字段與否,來表征待創(chuàng)建的表是否需要去重,那么,解析模塊103就據(jù)此,來解析其中的字段是否包括了norepeat字段,并根據(jù)解析的結(jié)果,生成判斷結(jié)果。若是,則判斷結(jié)果為是,表示待創(chuàng)建的表需要去重;若否,則判斷結(jié)果為否,表示不需要去重。相應(yīng)的,處理模塊104還可以用于:若判斷結(jié)果為是,則在hive中創(chuàng)建實(shí)體表和對(duì)應(yīng)的映射表,以及在hbase中創(chuàng)建對(duì)應(yīng)的索引表;若判斷結(jié)果為否,則直接在hive中創(chuàng)建實(shí)體表。實(shí)體表是可供用戶查詢數(shù)據(jù)的表,是hive中的主體,映射表則與實(shí)體表對(duì)應(yīng),是實(shí)體表的一種映射;索引表創(chuàng)建于hbase中,與映射表相對(duì)應(yīng),索引表與映射表的結(jié)構(gòu)一致。索引表具體可以是以首字段為rowkey的索引表,來保存索引對(duì)應(yīng)的數(shù)據(jù),利用rowkey來保證數(shù)據(jù)的唯一性。此外,在本實(shí)施例中,接收模塊102還可以用于:接收客戶端發(fā)送的添加和/修改數(shù)據(jù)對(duì)應(yīng)的第二控制命令;解析模塊103還可以用于:在索引表中,查找是否存在于第二控制命令對(duì)應(yīng)的表的名稱;處理模塊104還可以用于:若是,則將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中。在創(chuàng)建表之后,如果有數(shù)據(jù)要寫入創(chuàng)建的表,解析模塊103確定第二控制命令對(duì)應(yīng)的表的名稱,比如,第二控制命令中所包括的table_name…這樣的字段,就可以確定表的名稱,根據(jù)確定的表的名稱,在索引表中查找是否存在該表的名稱一致的表。由于只有需要去重的表,才會(huì)在hbase中創(chuàng)建索引表,因此,如果查找到不存在,說明第二控制命令對(duì)應(yīng)的表是一個(gè)新表,或者是不需要去重的表,不管是哪種情況,都可以直接將這個(gè)表添加到hive中,即在hive中創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)體表。如果在索引表中查找到了一致的表,則說明該表是需要進(jìn)行去重的表,那么,通過hive中的映射表,將該表的內(nèi)容進(jìn)行去重處理后,再寫入實(shí)體表中。在本實(shí)施例中,去重處理可以通過hive中的映射表和hbase中的索引表來進(jìn)行,具體的,處理模塊104還用于:將待添加和/或修改的數(shù)據(jù)通過映射表保存至索引表中;在索引表中,通過待添加和/或修改的數(shù)據(jù)的對(duì)應(yīng)的表進(jìn)行更新;將更新后的索引表的內(nèi)容,重寫入實(shí)體表中。利用hbase可更新的特點(diǎn),將原來的索引表進(jìn)行更新,更新之后的結(jié)果再重寫入實(shí)體表中,從而實(shí)現(xiàn)了對(duì)hive中實(shí)體表的更新。此外,如果sql解析異?;蛘哌B接hbase、hive組件異常時(shí),可以返回異常代碼給客戶端,客戶端拋出異常至控制臺(tái),由控制臺(tái)來進(jìn)行解決,或者控制臺(tái)通知運(yùn)維人員來維護(hù)。本實(shí)施例提供了一種基于分布式系統(tǒng)基礎(chǔ)架構(gòu)的數(shù)據(jù)處理裝置,確認(rèn)已部署的hive和hbase,接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果,根據(jù)判斷結(jié)果對(duì)應(yīng)的在hive和/或hbase中創(chuàng)建表。通過本實(shí)施例的實(shí)施,通過hbase的應(yīng)用,以及在創(chuàng)建時(shí)判斷是否需要去重,從而為數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中的實(shí)體表的數(shù)據(jù)更新提供了便利,減小了維護(hù)成本。第二實(shí)施例參照?qǐng)D3,圖3為本發(fā)明第二實(shí)施例提供的基于hadoop數(shù)據(jù)處理方法流程圖。本實(shí)施例中的數(shù)據(jù)處理方法,包括:s301、確認(rèn)已部署的hive和hbase;s302、接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令;s303、對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;s304、根據(jù)判斷結(jié)果對(duì)應(yīng)的在hive和/或hbase中創(chuàng)建表。s301中,確認(rèn)已部署的hive和hbase。這兩個(gè)數(shù)據(jù)庫(kù)可以整合為一個(gè)組件,一般部署在服務(wù)器上。該組件分別包括服務(wù)端和客戶端。服務(wù)端主要完成與hbase,hive的結(jié)構(gòu)的調(diào)用,完成創(chuàng)建、刪除、執(zhí)行sql語(yǔ)句等功能??蛻舳藙t在遠(yuǎn)程進(jìn)行對(duì)服務(wù)端的遠(yuǎn)程調(diào)用,用戶可以通過運(yùn)行殼黃栓在命令行中完成操作,無需直接操作服務(wù)端,就可以完成所需的數(shù)據(jù)的寫入、更新等過程。此外,在本實(shí)施例中,還可以集成客戶端至項(xiàng)目中,然后通過在代碼中調(diào)用客戶端的接口api,從而實(shí)現(xiàn)對(duì)服務(wù)端的遠(yuǎn)程調(diào)用。s302中,接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令??蛻舳送ㄟ^發(fā)送控制命令實(shí)現(xiàn)對(duì)服務(wù)端中的數(shù)據(jù)的寫入、更新、刪除等操作,也就是實(shí)現(xiàn)對(duì)服務(wù)端的控制;客戶端與服務(wù)端通過rpc進(jìn)行交互。在正式交互之前,也就是客戶端向服務(wù)端進(jìn)發(fā)送第一控制命令,進(jìn)而進(jìn)行數(shù)據(jù)處理之前,一般都需要進(jìn)行鑒權(quán)操作。具體的,在接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令之前,還可以包括:接收客戶端發(fā)送的密鑰,并通過密鑰對(duì)客戶端進(jìn)行鑒權(quán);鑒權(quán)通過后,允許客戶端發(fā)送命令。為了保證系統(tǒng)的安全,避免其他非本數(shù)據(jù)處理系統(tǒng)的其他客戶端發(fā)送命令對(duì)服務(wù)端中的數(shù)據(jù)進(jìn)行惡意篡改,還可以對(duì)客戶端的權(quán)限進(jìn)行鑒定。具體的,在進(jìn)行鑒權(quán)之前,服務(wù)端和客戶端會(huì)根據(jù)實(shí)際權(quán)限,為各個(gè)客戶端分配確定的密鑰,這個(gè)密鑰對(duì)于不同的,且都具有權(quán)限的客戶端而言可以相同,也可以不同,但是對(duì)于不具備權(quán)限的客戶端則無從知曉密鑰的內(nèi)容。在進(jìn)行鑒權(quán)時(shí),服務(wù)端接收客戶端所發(fā)送的,分配給客戶端的密鑰,來對(duì)客戶端進(jìn)行鑒權(quán),鑒權(quán)的具體過程可以包括:將該密鑰與預(yù)存在服務(wù)端的,符合鑒權(quán)要求的密鑰進(jìn)行比對(duì),若比對(duì)結(jié)果為滿足要求,則輸出鑒權(quán)通過的結(jié)果,即該客戶端的具有管理服務(wù)端的權(quán)限。其中,比對(duì)結(jié)果滿足要求可以是,客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰一致,或者客戶端提供的密鑰,與服務(wù)端預(yù)存的密鑰匹配,這個(gè)匹配可以結(jié)合客戶端的標(biāo)識(shí),如mac地址,ip地址等等,匹配的含義則可以包括客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰的組合滿足預(yù)設(shè)規(guī)則等等。具體的,對(duì)客戶端的鑒權(quán)方式可以根據(jù)具體的應(yīng)用場(chǎng)景選擇合適的方式,本實(shí)施例并不對(duì)其進(jìn)行具體的限定??蛻舳怂l(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,所指的是,該第一控制命令對(duì)應(yīng)于創(chuàng)建表,或者修改表。創(chuàng)建表和修改表的命令都是針對(duì)hive而言的,即客戶端所要進(jìn)行的控制是在hive中創(chuàng)建或者修改表。在hive中創(chuàng)建的表里,實(shí)體表可供用戶查詢數(shù)據(jù),映射表則是與實(shí)體表對(duì)應(yīng)的表,可以幫助實(shí)體表進(jìn)行更新操作??蛻舳怂l(fā)送的第一控制命令是通過rpc發(fā)送的,由于hive可直接通過sql查詢,因此,第一控制命令在服務(wù)端也以sql方式進(jìn)行傳遞。s303中,對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果。解析第一控制命令,就是解析通過sql方式傳遞的第一控制命令中所包含的語(yǔ)句。判斷是否需要去重,則是指即將創(chuàng)建的表,是否需要進(jìn)行去重的操作。簡(jiǎn)而言之,在hive中創(chuàng)建的表中,并不是所有的表都是需要對(duì)同樣的數(shù)據(jù)進(jìn)行區(qū)分的,有的表允許有重復(fù)的數(shù)據(jù),也就是不需要進(jìn)行更新操作,而有的表,則需要進(jìn)行更新操作,對(duì)于需要進(jìn)行更新操作的表,就是需要進(jìn)行去重的表,即去掉重復(fù)的表,保留更新后的表。在本實(shí)施例中,通過第一控制命令來區(qū)分,創(chuàng)建的表是否需要進(jìn)行去重操作。在一些可行的實(shí)施例中,可以通過在第一控制命令中添加norepeat字段與否,來判定是否需要進(jìn)行去重操作。norepeat,即無重復(fù),表示需要去重,而如果沒有添加這個(gè)字段,則表示無需去重。例如,具體的一種實(shí)現(xiàn)方式是:如果sql語(yǔ)句中包括字段:create[norepeat]tabletable_name…,則說明待創(chuàng)建的表是需要去重的表。值得一提的是,采用這種方式僅僅是本實(shí)施例中一個(gè)可行的方案,實(shí)際上完全可以采用其他方式進(jìn)行,比如將norepeat字段替換成update等等其他字段,或者僅僅是一個(gè)簡(jiǎn)單的標(biāo)記,只要能夠?qū)⑷ブ睾筒蝗ブ氐拇齽?chuàng)建的表進(jìn)行區(qū)分即可。進(jìn)一步的,在本實(shí)施例中,對(duì)第一控制命令進(jìn)行解析,判斷是否包含預(yù)設(shè)字段,生成判斷結(jié)果可以包括:解析第一控制命令中,是否包含norepeat字段;判斷結(jié)果包括是與否。也就是說,由于客戶端發(fā)送的第一控制命令中,通過添加norepeat字段與否,來表征待創(chuàng)建的表是否需要去重,那么,就據(jù)此來解析其中的字段是否包括了norepeat字段,并根據(jù)解析的結(jié)果,生成判斷結(jié)果。若是,則判斷結(jié)果為是,表示待創(chuàng)建的表需要去重;若否,則判斷結(jié)果為否,表示不需要去重。相應(yīng)的,根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表可以包括:若判斷結(jié)果為是,則在hive中創(chuàng)建實(shí)體表和對(duì)應(yīng)的映射表,以及在hbase中創(chuàng)建對(duì)應(yīng)的索引表;若判斷結(jié)果為否,則直接在hive中創(chuàng)建實(shí)體表。實(shí)體表是可供用戶查詢數(shù)據(jù)的表,是hive中的主體,映射表則與實(shí)體表對(duì)應(yīng),是實(shí)體表的一種映射;索引表創(chuàng)建于hbase中,與映射表相對(duì)應(yīng),索引表與映射表的結(jié)構(gòu)一致。索引表具體可以是以首字段為rowkey的索引表,來保存索引對(duì)應(yīng)的數(shù)據(jù),利用rowkey來保證數(shù)據(jù)的唯一性。此外,在本實(shí)施例中,在根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表之后,還可以包括:接收客戶端發(fā)送的添加和/修改數(shù)據(jù)對(duì)應(yīng)的第二控制命令;在索引表中,查找是否存在于第二控制命令對(duì)應(yīng)的表的名稱;若是,則將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中。在創(chuàng)建表之后,如果有數(shù)據(jù)要寫入創(chuàng)建的表,需確定第二控制命令對(duì)應(yīng)的表的名稱,比如,第二控制命令中所包括的table_name…這樣的字段,就可以確定表的名稱,根據(jù)確定的表的名稱,在索引表中查找是否存在該表的名稱一致的表。由于只有需要去重的表,才會(huì)在hbase中創(chuàng)建索引表,因此,如果查找到不存在,說明第二控制命令對(duì)應(yīng)的表是一個(gè)新表,或者是不需要去重的表,不管是哪種情況,都可以直接將這個(gè)表添加到hive中,即在hive中創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)體表。如果在索引表中查找到了一致的表,則說明該表是需要進(jìn)行去重的表,那么,通過hive中的映射表,將該表的內(nèi)容進(jìn)行去重處理后,再寫入實(shí)體表中。在本實(shí)施例中,去重處理可以通過hive中的映射表和hbase中的索引表來進(jìn)行,具體的,將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中可以包括:將待添加和/或修改的數(shù)據(jù)通過映射表保存至索引表中;在索引表中,通過待添加和/或修改的數(shù)據(jù)的對(duì)應(yīng)的表進(jìn)行更新;將更新后的索引表的內(nèi)容,重寫入實(shí)體表中。利用hbase可更新的特點(diǎn),將原來的索引表進(jìn)行更新,更新之后的結(jié)果再重寫入實(shí)體表中,從而實(shí)現(xiàn)了對(duì)hive中實(shí)體表的更新。此外,如果sql解析異?;蛘哌B接hbase、hive組件異常時(shí),可以返回異常代碼給客戶端,客戶端拋出異常至控制臺(tái),由控制臺(tái)來進(jìn)行解決,或者控制臺(tái)通知運(yùn)維人員來維護(hù)。本實(shí)施例提供了一種基于分布式系統(tǒng)基礎(chǔ)架構(gòu)的數(shù)據(jù)處理方法,確認(rèn)已部署的hive和hbase,接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果,根據(jù)判斷結(jié)果對(duì)應(yīng)的在hive和/或hbase中創(chuàng)建表。通過本實(shí)施例的實(shí)施,通過hbase的應(yīng)用,以及在創(chuàng)建時(shí)判斷是否需要去重,從而為數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中的實(shí)體表的數(shù)據(jù)更新提供了便利,減小了維護(hù)成本。第三實(shí)施例參照?qǐng)D4,圖4為本發(fā)明第三實(shí)施例提供的一種數(shù)據(jù)處理設(shè)備的組成示意圖,本實(shí)施例中的數(shù)據(jù)處理設(shè)備,包括:處理器401、存儲(chǔ)器402以及通信總線403;通信總線403用于實(shí)現(xiàn)處理器401和存儲(chǔ)器402之間的連接通信;處理器401用于執(zhí)行存儲(chǔ)器402中存儲(chǔ)的數(shù)據(jù)處理程序,以實(shí)現(xiàn):確認(rèn)已部署的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和海杜普數(shù)據(jù)庫(kù);接收客戶端發(fā)送的修改創(chuàng)建表對(duì)應(yīng)的第一控制命令;對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表。在本實(shí)施例中,執(zhí)行數(shù)據(jù)處理程序,首先實(shí)現(xiàn):確認(rèn)已部署的hive和hbase。這兩個(gè)數(shù)據(jù)庫(kù)可以整合為一個(gè)組件,一般部署在服務(wù)器上。該組件分別包括服務(wù)端和客戶端。服務(wù)端主要完成與hbase,hive的結(jié)構(gòu)的調(diào)用,完成創(chuàng)建、刪除、執(zhí)行sql語(yǔ)句等功能??蛻舳藙t在遠(yuǎn)程進(jìn)行對(duì)服務(wù)端的遠(yuǎn)程調(diào)用,用戶可以通過運(yùn)行殼黃栓在命令行中完成操作,無需直接操作服務(wù)端,就可以完成所需的數(shù)據(jù)的寫入、更新等過程。此外,在本實(shí)施例中,還可以集成客戶端至項(xiàng)目中,然后通過在代碼中調(diào)用客戶端的接口api,從而實(shí)現(xiàn)對(duì)服務(wù)端的遠(yuǎn)程調(diào)用。執(zhí)行數(shù)據(jù)處理程序,然后實(shí)現(xiàn):接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令??蛻舳送ㄟ^發(fā)送控制命令實(shí)現(xiàn)對(duì)服務(wù)端中的數(shù)據(jù)的寫入、更新、刪除等操作,也就是實(shí)現(xiàn)對(duì)服務(wù)端的控制;客戶端與服務(wù)端通過rpc進(jìn)行交互。在正式交互之前,也就是客戶端向服務(wù)端進(jìn)發(fā)送第一控制命令,進(jìn)而進(jìn)行數(shù)據(jù)處理之前,一般都需要進(jìn)行鑒權(quán)操作。具體的,在接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令之前,處理器401還可以用于執(zhí)行數(shù)據(jù)處理程序,以實(shí)現(xiàn):接收客戶端發(fā)送的密鑰,并通過密鑰對(duì)客戶端進(jìn)行鑒權(quán);鑒權(quán)通過后,允許客戶端發(fā)送命令。為了保證系統(tǒng)的安全,避免其他非本數(shù)據(jù)處理系統(tǒng)的其他客戶端發(fā)送命令對(duì)服務(wù)端中的數(shù)據(jù)進(jìn)行惡意篡改,還可以對(duì)客戶端的權(quán)限進(jìn)行鑒定。具體的,在進(jìn)行鑒權(quán)之前,服務(wù)端和客戶端會(huì)根據(jù)實(shí)際權(quán)限,為各個(gè)客戶端分配確定的密鑰,這個(gè)密鑰對(duì)于不同的,且都具有權(quán)限的客戶端而言可以相同,也可以不同,但是對(duì)于不具備權(quán)限的客戶端則無從知曉密鑰的內(nèi)容。在進(jìn)行鑒權(quán)時(shí),服務(wù)端接收客戶端所發(fā)送的,分配給客戶端的密鑰,來對(duì)客戶端進(jìn)行鑒權(quán),鑒權(quán)的具體過程可以包括:將該密鑰與預(yù)存在服務(wù)端的,符合鑒權(quán)要求的密鑰進(jìn)行比對(duì),若比對(duì)結(jié)果為滿足要求,則輸出鑒權(quán)通過的結(jié)果,即該客戶端的具有管理服務(wù)端的權(quán)限。其中,比對(duì)結(jié)果滿足要求可以是,客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰一致,或者客戶端提供的密鑰,與服務(wù)端預(yù)存的密鑰匹配,這個(gè)匹配可以結(jié)合客戶端的標(biāo)識(shí),如mac地址,ip地址等等,匹配的含義則可以包括客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰的組合滿足預(yù)設(shè)規(guī)則等等。具體的,對(duì)客戶端的鑒權(quán)方式可以根據(jù)具體的應(yīng)用場(chǎng)景選擇合適的方式,本實(shí)施例并不對(duì)其進(jìn)行具體的限定??蛻舳怂l(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,所指的是,該第一控制命令對(duì)應(yīng)于創(chuàng)建表,或者修改表。創(chuàng)建表和修改表的命令都是針對(duì)hive而言的,即客戶端所要進(jìn)行的控制是在hive中創(chuàng)建或者修改表。在hive中創(chuàng)建的表里,實(shí)體表可供用戶查詢數(shù)據(jù),映射表則是與實(shí)體表對(duì)應(yīng)的表,可以幫助實(shí)體表進(jìn)行更新操作??蛻舳怂l(fā)送的第一控制命令是通過rpc發(fā)送的,由于hive可直接通過sql查詢,因此,第一控制命令在服務(wù)端也以sql方式進(jìn)行傳遞。在本實(shí)施例中,執(zhí)行數(shù)據(jù)處理程序,然后實(shí)現(xiàn):對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果。解析第一控制命令,就是解析通過sql方式傳遞的第一控制命令中所包含的語(yǔ)句。判斷是否需要去重,則是指即將創(chuàng)建的表,是否需要進(jìn)行去重的操作。簡(jiǎn)而言之,在hive中創(chuàng)建的表中,并不是所有的表都是需要對(duì)同樣的數(shù)據(jù)進(jìn)行區(qū)分的,有的表允許有重復(fù)的數(shù)據(jù),也就是不需要進(jìn)行更新操作,而有的表,則需要進(jìn)行更新操作,對(duì)于需要進(jìn)行更新操作的表,就是需要進(jìn)行去重的表,即去掉重復(fù)的表,保留更新后的表。在本實(shí)施例中,通過第一控制命令來區(qū)分,創(chuàng)建的表是否需要進(jìn)行去重操作。在一些可行的實(shí)施例中,可以通過在第一控制命令中添加norepeat字段與否,來判定是否需要進(jìn)行去重操作。norepeat,即無重復(fù),表示需要去重,而如果沒有添加這個(gè)字段,則表示無需去重。例如,具體的一種實(shí)現(xiàn)方式是:如果sql語(yǔ)句中包括字段:create[norepeat]tabletable_name…,則說明待創(chuàng)建的表是需要去重的表。值得一提的是,采用這種方式僅僅是本實(shí)施例中一個(gè)可行的方案,實(shí)際上完全可以采用其他方式進(jìn)行,比如將norepeat字段替換成update等等其他字段,或者僅僅是一個(gè)簡(jiǎn)單的標(biāo)記,只要能夠?qū)⑷ブ睾筒蝗ブ氐拇齽?chuàng)建的表進(jìn)行區(qū)分即可。進(jìn)一步的,在本實(shí)施例中,對(duì)第一控制命令進(jìn)行解析,判斷是否包含預(yù)設(shè)字段,生成判斷結(jié)果可以包括:解析第一控制命令中,是否包含norepeat字段;判斷結(jié)果包括是與否。也就是說,由于客戶端發(fā)送的第一控制命令中,通過添加norepeat字段與否,來表征待創(chuàng)建的表是否需要去重,那么,就據(jù)此來解析其中的字段是否包括了norepeat字段,并根據(jù)解析的結(jié)果,生成判斷結(jié)果。若是,則判斷結(jié)果為是,表示待創(chuàng)建的表需要去重;若否,則判斷結(jié)果為否,表示不需要去重。相應(yīng)的,根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表可以包括:若判斷結(jié)果為是,則在hive中創(chuàng)建實(shí)體表和對(duì)應(yīng)的映射表,以及在hbase中創(chuàng)建對(duì)應(yīng)的索引表;若判斷結(jié)果為否,則直接在hive中創(chuàng)建實(shí)體表。實(shí)體表是可供用戶查詢數(shù)據(jù)的表,是hive中的主體,映射表則與實(shí)體表對(duì)應(yīng),是實(shí)體表的一種映射;索引表創(chuàng)建于hbase中,與映射表相對(duì)應(yīng),索引表與映射表的結(jié)構(gòu)一致。索引表具體可以是以首字段為rowkey的索引表,來保存索引對(duì)應(yīng)的數(shù)據(jù),利用rowkey來保證數(shù)據(jù)的唯一性。此外,在本實(shí)施例中,在根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表之后,處理器401還可以用于執(zhí)行數(shù)據(jù)處理程序,以實(shí)現(xiàn):接收客戶端發(fā)送的添加和/修改數(shù)據(jù)對(duì)應(yīng)的第二控制命令;在索引表中,查找是否存在于第二控制命令對(duì)應(yīng)的表的名稱;若是,則將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中。在創(chuàng)建表之后,如果有數(shù)據(jù)要寫入創(chuàng)建的表,需確定第二控制命令對(duì)應(yīng)的表的名稱,比如,第二控制命令中所包括的table_name…這樣的字段,就可以確定表的名稱,根據(jù)確定的表的名稱,在索引表中查找是否存在該表的名稱一致的表。由于只有需要去重的表,才會(huì)在hbase中創(chuàng)建索引表,因此,如果查找到不存在,說明第二控制命令對(duì)應(yīng)的表是一個(gè)新表,或者是不需要去重的表,不管是哪種情況,都可以直接將這個(gè)表添加到hive中,即在hive中創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)體表。如果在索引表中查找到了一致的表,則說明該表是需要進(jìn)行去重的表,那么,通過hive中的映射表,將該表的內(nèi)容進(jìn)行去重處理后,再寫入實(shí)體表中。在本實(shí)施例中,去重處理可以通過hive中的映射表和hbase中的索引表來進(jìn)行,具體的,將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中可以包括:將待添加和/或修改的數(shù)據(jù)通過映射表保存至索引表中;在索引表中,通過待添加和/或修改的數(shù)據(jù)的對(duì)應(yīng)的表進(jìn)行更新;將更新后的索引表的內(nèi)容,重寫入實(shí)體表中。利用hbase可更新的特點(diǎn),將原來的索引表進(jìn)行更新,更新之后的結(jié)果再重寫入實(shí)體表中,從而實(shí)現(xiàn)了對(duì)hive中實(shí)體表的更新。此外,如果sql解析異?;蛘哌B接hbase、hive組件異常時(shí),可以返回異常代碼給客戶端,客戶端拋出異常至控制臺(tái),由控制臺(tái)來進(jìn)行解決,或者控制臺(tái)通知運(yùn)維人員來維護(hù)。本實(shí)施例提供了一種數(shù)據(jù)處理設(shè)備,確認(rèn)已部署的hive和hbase,接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果,根據(jù)判斷結(jié)果對(duì)應(yīng)的在hive和/或hbase中創(chuàng)建表。通過本實(shí)施例的實(shí)施,通過hbase的應(yīng)用,以及在創(chuàng)建時(shí)判斷是否需要去重,從而為數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中的實(shí)體表的數(shù)據(jù)更新提供了便利,減小了維護(hù)成本。第四實(shí)施例本實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,該一個(gè)或者多個(gè)程序可被一個(gè)或者多個(gè)處理器執(zhí)行,以實(shí)現(xiàn):確認(rèn)已部署的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和海杜普數(shù)據(jù)庫(kù);接收客戶端發(fā)送的修改創(chuàng)建表對(duì)應(yīng)的第一控制命令;對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果;根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表。在本實(shí)施例中,一個(gè)或者多個(gè)程序被一個(gè)或者多個(gè)處理器執(zhí)行,首先實(shí)現(xiàn):確認(rèn)已部署的hive和hbase。這兩個(gè)數(shù)據(jù)庫(kù)可以整合為一個(gè)組件,一般部署在服務(wù)器上。該組件分別包括服務(wù)端和客戶端。服務(wù)端主要完成與hbase,hive的結(jié)構(gòu)的調(diào)用,完成創(chuàng)建、刪除、執(zhí)行sql語(yǔ)句等功能??蛻舳藙t在遠(yuǎn)程進(jìn)行對(duì)服務(wù)端的遠(yuǎn)程調(diào)用,用戶可以通過運(yùn)行殼黃栓在命令行中完成操作,無需直接操作服務(wù)端,就可以完成所需的數(shù)據(jù)的寫入、更新等過程。此外,在本實(shí)施例中,還可以集成客戶端至項(xiàng)目中,然后通過在代碼中調(diào)用客戶端的接口api,從而實(shí)現(xiàn)對(duì)服務(wù)端的遠(yuǎn)程調(diào)用。一個(gè)或者多個(gè)程序被一個(gè)或者多個(gè)處理器執(zhí)行,然后實(shí)現(xiàn):接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令??蛻舳送ㄟ^發(fā)送控制命令實(shí)現(xiàn)對(duì)服務(wù)端中的數(shù)據(jù)的寫入、更新、刪除等操作,也就是實(shí)現(xiàn)對(duì)服務(wù)端的控制;客戶端與服務(wù)端通過rpc進(jìn)行交互。在正式交互之前,也就是客戶端向服務(wù)端進(jìn)發(fā)送第一控制命令,進(jìn)而進(jìn)行數(shù)據(jù)處理之前,一般都需要進(jìn)行鑒權(quán)操作。具體的,在接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令之前,一個(gè)或者多個(gè)程序被一個(gè)或者多個(gè)處理器執(zhí)行,還可以實(shí)現(xiàn):接收客戶端發(fā)送的密鑰,并通過密鑰對(duì)客戶端進(jìn)行鑒權(quán);鑒權(quán)通過后,允許客戶端發(fā)送命令。為了保證系統(tǒng)的安全,避免其他非本數(shù)據(jù)處理系統(tǒng)的其他客戶端發(fā)送命令對(duì)服務(wù)端中的數(shù)據(jù)進(jìn)行惡意篡改,還可以對(duì)客戶端的權(quán)限進(jìn)行鑒定。具體的,在進(jìn)行鑒權(quán)之前,服務(wù)端和客戶端會(huì)根據(jù)實(shí)際權(quán)限,為各個(gè)客戶端分配確定的密鑰,這個(gè)密鑰對(duì)于不同的,且都具有權(quán)限的客戶端而言可以相同,也可以不同,但是對(duì)于不具備權(quán)限的客戶端則無從知曉密鑰的內(nèi)容。在進(jìn)行鑒權(quán)時(shí),服務(wù)端接收客戶端所發(fā)送的,分配給客戶端的密鑰,來對(duì)客戶端進(jìn)行鑒權(quán),鑒權(quán)的具體過程可以包括:將該密鑰與預(yù)存在服務(wù)端的,符合鑒權(quán)要求的密鑰進(jìn)行比對(duì),若比對(duì)結(jié)果為滿足要求,則輸出鑒權(quán)通過的結(jié)果,即該客戶端的具有管理服務(wù)端的權(quán)限。其中,比對(duì)結(jié)果滿足要求可以是,客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰一致,或者客戶端提供的密鑰,與服務(wù)端預(yù)存的密鑰匹配,這個(gè)匹配可以結(jié)合客戶端的標(biāo)識(shí),如mac地址,ip地址等等,匹配的含義則可以包括客戶端提供的密鑰與服務(wù)端預(yù)存的密鑰的組合滿足預(yù)設(shè)規(guī)則等等。具體的,對(duì)客戶端的鑒權(quán)方式可以根據(jù)具體的應(yīng)用場(chǎng)景選擇合適的方式,本實(shí)施例并不對(duì)其進(jìn)行具體的限定??蛻舳怂l(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,所指的是,該第一控制命令對(duì)應(yīng)于創(chuàng)建表,或者修改表。創(chuàng)建表和修改表的命令都是針對(duì)hive而言的,即客戶端所要進(jìn)行的控制是在hive中創(chuàng)建或者修改表。在hive中創(chuàng)建的表里,實(shí)體表可供用戶查詢數(shù)據(jù),映射表則是與實(shí)體表對(duì)應(yīng)的表,可以幫助實(shí)體表進(jìn)行更新操作??蛻舳怂l(fā)送的第一控制命令是通過rpc發(fā)送的,由于hive可直接通過sql查詢,因此,第一控制命令在服務(wù)端也以sql方式進(jìn)行傳遞。一個(gè)或者多個(gè)程序被一個(gè)或者多個(gè)處理器執(zhí)行,然后實(shí)現(xiàn):對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果。解析第一控制命令,就是解析通過sql方式傳遞的第一控制命令中所包含的語(yǔ)句。判斷是否需要去重,則是指即將創(chuàng)建的表,是否需要進(jìn)行去重的操作。簡(jiǎn)而言之,在hive中創(chuàng)建的表中,并不是所有的表都是需要對(duì)同樣的數(shù)據(jù)進(jìn)行區(qū)分的,有的表允許有重復(fù)的數(shù)據(jù),也就是不需要進(jìn)行更新操作,而有的表,則需要進(jìn)行更新操作,對(duì)于需要進(jìn)行更新操作的表,就是需要進(jìn)行去重的表,即去掉重復(fù)的表,保留更新后的表。在本實(shí)施例中,通過第一控制命令來區(qū)分,創(chuàng)建的表是否需要進(jìn)行去重操作。在一些可行的實(shí)施例中,可以通過在第一控制命令中添加norepeat字段與否,來判定是否需要進(jìn)行去重操作。norepeat,即無重復(fù),表示需要去重,而如果沒有添加這個(gè)字段,則表示無需去重。例如,具體的一種實(shí)現(xiàn)方式是:如果sql語(yǔ)句中包括字段:create[norepeat]tabletable_name…,則說明待創(chuàng)建的表是需要去重的表。值得一提的是,采用這種方式僅僅是本實(shí)施例中一個(gè)可行的方案,實(shí)際上完全可以采用其他方式進(jìn)行,比如將norepeat字段替換成update等等其他字段,或者僅僅是一個(gè)簡(jiǎn)單的標(biāo)記,只要能夠?qū)⑷ブ睾筒蝗ブ氐拇齽?chuàng)建的表進(jìn)行區(qū)分即可。進(jìn)一步的,在本實(shí)施例中,對(duì)第一控制命令進(jìn)行解析,判斷是否包含預(yù)設(shè)字段,生成判斷結(jié)果可以包括:解析第一控制命令中,是否包含norepeat字段;判斷結(jié)果包括是與否。也就是說,由于客戶端發(fā)送的第一控制命令中,通過添加norepeat字段與否,來表征待創(chuàng)建的表是否需要去重,那么,就據(jù)此來解析其中的字段是否包括了norepeat字段,并根據(jù)解析的結(jié)果,生成判斷結(jié)果。若是,則判斷結(jié)果為是,表示待創(chuàng)建的表需要去重;若否,則判斷結(jié)果為否,表示不需要去重。相應(yīng)的,根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表可以包括:若判斷結(jié)果為是,則在hive中創(chuàng)建實(shí)體表和對(duì)應(yīng)的映射表,以及在hbase中創(chuàng)建對(duì)應(yīng)的索引表;若判斷結(jié)果為否,則直接在hive中創(chuàng)建實(shí)體表。實(shí)體表是可供用戶查詢數(shù)據(jù)的表,是hive中的主體,映射表則與實(shí)體表對(duì)應(yīng),是實(shí)體表的一種映射;索引表創(chuàng)建于hbase中,與映射表相對(duì)應(yīng),索引表與映射表的結(jié)構(gòu)一致。索引表具體可以是以首字段為rowkey的索引表,來保存索引對(duì)應(yīng)的數(shù)據(jù),利用rowkey來保證數(shù)據(jù)的唯一性。此外,在本實(shí)施例中,在根據(jù)判斷結(jié)果對(duì)應(yīng)的在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架和/或海杜普數(shù)據(jù)庫(kù)中創(chuàng)建表之后,一個(gè)或者多個(gè)程序被一個(gè)或者多個(gè)處理器執(zhí)行,還可以實(shí)現(xiàn):接收客戶端發(fā)送的添加和/修改數(shù)據(jù)對(duì)應(yīng)的第二控制命令;在索引表中,查找是否存在于第二控制命令對(duì)應(yīng)的表的名稱;若是,則將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中。在創(chuàng)建表之后,如果有數(shù)據(jù)要寫入創(chuàng)建的表,需確定第二控制命令對(duì)應(yīng)的表的名稱,比如,第二控制命令中所包括的table_name…這樣的字段,就可以確定表的名稱,根據(jù)確定的表的名稱,在索引表中查找是否存在該表的名稱一致的表。由于只有需要去重的表,才會(huì)在hbase中創(chuàng)建索引表,因此,如果查找到不存在,說明第二控制命令對(duì)應(yīng)的表是一個(gè)新表,或者是不需要去重的表,不管是哪種情況,都可以直接將這個(gè)表添加到hive中,即在hive中創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)體表。如果在索引表中查找到了一致的表,則說明該表是需要進(jìn)行去重的表,那么,通過hive中的映射表,將該表的內(nèi)容進(jìn)行去重處理后,再寫入實(shí)體表中。在本實(shí)施例中,去重處理可以通過hive中的映射表和hbase中的索引表來進(jìn)行,具體的,將待添加和/或修改的數(shù)據(jù)進(jìn)行去重處理后,寫入實(shí)體表中可以包括:將待添加和/或修改的數(shù)據(jù)通過映射表保存至索引表中;在索引表中,通過待添加和/或修改的數(shù)據(jù)的對(duì)應(yīng)的表進(jìn)行更新;將更新后的索引表的內(nèi)容,重寫入實(shí)體表中。利用hbase可更新的特點(diǎn),將原來的索引表進(jìn)行更新,更新之后的結(jié)果再重寫入實(shí)體表中,從而實(shí)現(xiàn)了對(duì)hive中實(shí)體表的更新。此外,如果sql解析異?;蛘哌B接hbase、hive組件異常時(shí),可以返回異常代碼給客戶端,客戶端拋出異常至控制臺(tái),由控制臺(tái)來進(jìn)行解決,或者控制臺(tái)通知運(yùn)維人員來維護(hù)。本實(shí)施例提供了一種數(shù)據(jù)處理設(shè)備,確認(rèn)已部署的hive和hbase,接收客戶端發(fā)送的創(chuàng)建修改表對(duì)應(yīng)的第一控制命令,對(duì)第一控制命令進(jìn)行解析,判斷是否需要去重,生成判斷結(jié)果,根據(jù)判斷結(jié)果對(duì)應(yīng)的在hive和/或hbase中創(chuàng)建表。通過本實(shí)施例的實(shí)施,通過hbase的應(yīng)用,以及在創(chuàng)建時(shí)判斷是否需要去重,從而為數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架中的實(shí)體表的數(shù)據(jù)更新提供了便利,減小了維護(hù)成本。上面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的具體實(shí)施方式,上述的具體實(shí)施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12