一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法及系統(tǒng),其中,所述方法包括:從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HADOOP混合體系進(jìn)行處理。
【專利說(shuō)明】
一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法及系統(tǒng)。
【背景技術(shù)】
[0002]本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本申請(qǐng)實(shí)施例技術(shù)方案的過(guò)程中,至少發(fā)現(xiàn)相關(guān)技術(shù)中存在如下技術(shù)問(wèn)題:
[0003]大數(shù)據(jù)時(shí)代,數(shù)據(jù)呈現(xiàn)4V特點(diǎn),即:容量大、種類多、大規(guī)模和有價(jià)值的信息少,尤其是種類比較多。眾所周知,傳統(tǒng)的RDMBS主要處理結(jié)構(gòu)化數(shù)據(jù),如目前的Oracle等數(shù)據(jù)庫(kù)系統(tǒng),但是其無(wú)法處理大數(shù)據(jù)時(shí)代的半結(jié)構(gòu)、非結(jié)構(gòu)化數(shù)據(jù),如Twitter聊天記錄,微博上的溝通信息等。
[0004]對(duì)于非結(jié)構(gòu)化的大數(shù)據(jù),目前基本上采用Hadoop體系進(jìn)行處理,如Hive、Hbase、HDFS等,而結(jié)構(gòu)化數(shù)據(jù)基本上采用基于Share-Nothing的MPP新型數(shù)據(jù)庫(kù)處理,目前技術(shù)比較成熟。
[0005]而半結(jié)構(gòu)化的大數(shù)據(jù)處理,目前基本上采用非結(jié)構(gòu)化的數(shù)據(jù)處理技術(shù),如Hadoop進(jìn)行處理,主要的方法包括HDFS、Hive、Hbase以及MapReduce等,其中HDFS是大數(shù)據(jù)體系下的分布式文件系統(tǒng),而Hive是類SQL技術(shù)的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng),Hbase是非結(jié)構(gòu)化的NoSQL數(shù)據(jù)庫(kù),MapReduce是大規(guī)模并行計(jì)算框架。
[0006]對(duì)于Hadoop的體系結(jié)構(gòu)而言,如圖1所示,Hadoop的體系中,Hbase是大數(shù)據(jù)體系中處理半結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)的核心系統(tǒng)之一。Hbase不同于一般的關(guān)系數(shù)據(jù)庫(kù),其不遵循ACID要求,而采用NoSQL技術(shù),因此它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)?’另一個(gè)不同的是Hbase基于列的而不是基于行的模式。而且其只能表示很簡(jiǎn)單的鍵-數(shù)據(jù)的映射關(guān)系。
[0007]目前處理非結(jié)構(gòu)化、半結(jié)構(gòu)化的NoSQL數(shù)據(jù)庫(kù)不僅包括Hbase,還有目前比較成熟的 MongoDB、Neo4j\ MemcacheDB、CouchDB、Cassandra 等等。
[0008]現(xiàn)有技術(shù)存在的缺點(diǎn)為:目前的RDBMS以及MPP數(shù)據(jù)庫(kù)技術(shù)無(wú)法處理半結(jié)構(gòu)化數(shù)據(jù),只能采用NoSQL數(shù)據(jù)庫(kù)技術(shù),如Hadoop體系下的Hbase等。但是,第一,半結(jié)構(gòu)化數(shù)據(jù)在結(jié)構(gòu)化方面依然存在較強(qiáng)的規(guī)律性,很多半結(jié)構(gòu)化數(shù)據(jù)依然上可以理解為結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù);第二,傳統(tǒng)的RDBMS和MPP數(shù)據(jù)庫(kù),尤其MPP數(shù)據(jù)庫(kù)在結(jié)構(gòu)化數(shù)據(jù)處理、OLTP事務(wù)處理,以及查詢類操作等方面具有極強(qiáng)的技術(shù)優(yōu)勢(shì);第三,半結(jié)構(gòu)化數(shù)據(jù)在具體操作中存在較多的查詢、刪除、修改等操作,而且具有反復(fù)數(shù)據(jù)修改等操作,這些是Hadoop下HDFS分布式文件系統(tǒng)和Hbase所不擅長(zhǎng)的;第四,Hbase的基礎(chǔ)是HDFS分布式文件系統(tǒng),其主要優(yōu)點(diǎn)是適合處理超大文件、一次寫(xiě)入多次讀取、高可擴(kuò)性,但是其問(wèn)題是不適合低延遲數(shù)據(jù)訪問(wèn)、無(wú)法高效存儲(chǔ)大量小文件、不支持多用戶寫(xiě)入及任意修改文件;第五,Hbase系統(tǒng)的主要問(wèn)題是其基于HDFS系統(tǒng)構(gòu)建,HDFS的問(wèn)題必然導(dǎo)致Hbase在速度、小文件、數(shù)據(jù)修改等方面存在問(wèn)題。但是其優(yōu)點(diǎn)是采用列存儲(chǔ)、Key-Value等技術(shù),適合非結(jié)構(gòu)化數(shù)據(jù)的查詢和處理。
[0009]綜上所述,目前的NoSQL技術(shù),尤其Hadoop體系下的HDFS和Hbase在處理半結(jié)構(gòu)數(shù)據(jù)方面存在較多的問(wèn)題,其更加適合非結(jié)構(gòu)化數(shù)據(jù),尤其是大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù)。同時(shí),MPP技術(shù)和系統(tǒng)更加適合處理結(jié)構(gòu)化數(shù)據(jù)、尤其小規(guī)模的結(jié)構(gòu)化數(shù)據(jù),也就是說(shuō),采用現(xiàn)有技術(shù),對(duì)于半結(jié)構(gòu)數(shù)據(jù)方面的處理都不太適合的,存在比較多的問(wèn)題。
【發(fā)明內(nèi)容】
[0010]有鑒于此,本發(fā)明實(shí)施例希望提供一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法及系統(tǒng),至少解決了現(xiàn)有技術(shù)存在的問(wèn)題。
[0011]本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0012]本發(fā)明實(shí)施例的一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法,所述方法包括:
[0013]從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);
[0014]對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理。
[0015]上述方案中,對(duì)于寫(xiě)操作請(qǐng)求,所述將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù),包括:
[0016]啟動(dòng)數(shù)據(jù)處理引擎,所述數(shù)據(jù)處理引擎作為系統(tǒng)架構(gòu)的中間層,用于對(duì)位于所述數(shù)據(jù)處理引擎上層應(yīng)用系統(tǒng)的應(yīng)用數(shù)據(jù)進(jìn)行分析,并調(diào)用位于所述數(shù)據(jù)處理引擎下層的所述MPP+HAD00P混合體系進(jìn)行數(shù)據(jù)處理;
[0017]通過(guò)所述數(shù)據(jù)處理引擎對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù);
[0018]相應(yīng)的,所述對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理,包括:
[0019]所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的MPP數(shù)據(jù)庫(kù)接口,將所述結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)庫(kù)中并交由MPP數(shù)據(jù)庫(kù)單獨(dú)處理所述結(jié)構(gòu)化數(shù)據(jù);
[0020]所述數(shù)據(jù)處理弓I擎調(diào)用所述MPP+HAD00P混合體系中的HAD00P Hbase接口,將所述非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中并交由Hbase數(shù)據(jù)庫(kù)單獨(dú)處理所述非結(jié)構(gòu)化數(shù)據(jù)。
[0021]上述方案中,所述通過(guò)所述數(shù)據(jù)處理引擎對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù),包括:
[0022]列出所述半結(jié)構(gòu)化數(shù)據(jù)中所有的分拆行鍵,按照行標(biāo)識(shí)符和列標(biāo)識(shí)符創(chuàng)建得到的新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件;
[0023]對(duì)于所有需要分拆的行繼續(xù)處理,將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊;
[0024]將所有的其他行讀出放到新的結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊。
[0025]上述方案中,對(duì)于讀操作請(qǐng)求,所述方法還包括:
[0026]所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的MPP數(shù)據(jù)庫(kù)接口,將所述結(jié)構(gòu)化數(shù)據(jù)從MPP數(shù)據(jù)庫(kù)中讀取出來(lái);
[0027]所述數(shù)據(jù)處理弓I擎調(diào)用所述MPP+HAD00P混合體系中的HADOOP Hbase接口,將所述非結(jié)構(gòu)化數(shù)據(jù)從Hbase數(shù)據(jù)庫(kù)中讀取出來(lái);
[0028]將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù)。
[0029]上述方案中,所述將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù),包括:
[0030]讀取Hbase中的非結(jié)構(gòu)化數(shù)據(jù);
[0031]讀取MPP中的結(jié)構(gòu)化數(shù)據(jù),并得到所有的行數(shù);
[0032]將結(jié)構(gòu)化數(shù)據(jù)按照行標(biāo)識(shí)符和列標(biāo)識(shí)符全部存放到非結(jié)構(gòu)化數(shù)據(jù)中,實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)的封裝。
[0033]上述方案中,所述方法還包括:在執(zhí)行所述分拆或所述組合之前,判斷當(dāng)前的數(shù)據(jù)庫(kù)和表的類型,如果是非結(jié)構(gòu)化數(shù)據(jù)則提示進(jìn)行分拆處理;如果是半結(jié)構(gòu)化數(shù)據(jù),則提示需要從所述MPP數(shù)據(jù)庫(kù)和所述Hbase數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分別讀取以進(jìn)行組合處理。
[0034]本發(fā)明實(shí)施例的一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的系統(tǒng),所述系統(tǒng)包括:
[0035]數(shù)據(jù)處理引擎,用于從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);調(diào)用MPP+HAD00P系統(tǒng)層,使得能對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理;
[0036]上層應(yīng)用系統(tǒng)層,用于為所述數(shù)據(jù)處理引擎提供所述待處理數(shù)據(jù);
[0037]MPP+HAD00P系統(tǒng)層,用于接受所述數(shù)據(jù)處理引擎的調(diào)度,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理。
[0038]上述方案中,所述數(shù)據(jù)處理引擎,進(jìn)一步包括:
[0039]寫(xiě)操作處理引擎,用于對(duì)于寫(xiě)操作請(qǐng)求的情況下,對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù),并分別調(diào)用MPP數(shù)據(jù)庫(kù)接口和HAD00P Hbase接口觸發(fā)MPP操作處理模塊和Hbase操作處理模塊進(jìn)行數(shù)據(jù)處理;
[0040]MPP操作處理模塊,用于接受所述寫(xiě)操作處理引擎的調(diào)用,將所述結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)庫(kù)中并交由MPP數(shù)據(jù)庫(kù)單獨(dú)處理所述結(jié)構(gòu)化數(shù)據(jù);
[0041]Hbase操作處理模塊,用于接受所述寫(xiě)操作處理引擎的調(diào)用,將所述非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中并交由Hbase數(shù)據(jù)庫(kù)單獨(dú)處理所述非結(jié)構(gòu)化數(shù)據(jù)。
[0042]上述方案中,所述寫(xiě)操作處理引擎,進(jìn)一步用于:
[0043]列出所述半結(jié)構(gòu)化數(shù)據(jù)中所有的分拆行鍵,按照行標(biāo)識(shí)符和列標(biāo)識(shí)符創(chuàng)建得到的新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件;
[0044]對(duì)于所有需要分拆的行繼續(xù)處理,將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊;
[0045]將所有的其他行讀出放到新的結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊。
[0046]上述方案中,所述數(shù)據(jù)處理引擎,進(jìn)一步包括:
[0047]讀操作處理引擎,用于對(duì)于讀操作請(qǐng)求的情況下,分別調(diào)用MPP數(shù)據(jù)庫(kù)接口和HAD00P Hbase接口觸發(fā)MPP操作處理模塊和Hbase操作處理模塊進(jìn)行數(shù)據(jù)處理;
[0048]所述MPP操作處理模塊,進(jìn)一步用于接受所述讀操作處理引擎的調(diào)用,將所述結(jié)構(gòu)化數(shù)據(jù)從MPP數(shù)據(jù)庫(kù)中讀取出來(lái),并交由所述讀操作處理引擎;
[0049]所述Hbase操作處理模塊,進(jìn)一步用于接受所述讀操作處理引擎的調(diào)用,將所述非結(jié)構(gòu)化數(shù)據(jù)從Hbase數(shù)據(jù)庫(kù)中讀取出來(lái),并交由所述讀操作處理引擎;
[0050]所述讀操作處理引擎,還用于將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù)。
[0051]上述方案中,所述讀操作處理引擎,進(jìn)一步用于:
[0052]讀取Hbase中的非結(jié)構(gòu)化數(shù)據(jù);
[0053]讀取MPP中的結(jié)構(gòu)化數(shù)據(jù),并得到所有的行數(shù);
[0054]將結(jié)構(gòu)化數(shù)據(jù)按照行標(biāo)識(shí)符和列標(biāo)識(shí)符全部存放到非結(jié)構(gòu)化數(shù)據(jù)中,實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)的封裝。
[0055]上述方案中,所述系統(tǒng)還包括:
[0056]元數(shù)據(jù)管理模塊,用于在執(zhí)行所述分拆或所述組合之前,判斷當(dāng)前的數(shù)據(jù)庫(kù)和表的類型,如果是非結(jié)構(gòu)化數(shù)據(jù)則提示所述寫(xiě)操作處理引擎進(jìn)行分拆處理;如果是半結(jié)構(gòu)化數(shù)據(jù),則提示需要從所述MPP數(shù)據(jù)庫(kù)和所述Hbase數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分別讀取,以提供給所述讀操作處理引擎進(jìn)行組合處理。
[0057]本發(fā)明實(shí)施例的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法,包括:從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理。
[0058]采用本發(fā)明實(shí)施例,將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行描述,利用MPP和HADOOP各自的優(yōu)勢(shì),采用MPP+HAD00P混合體系進(jìn)行數(shù)據(jù)處理,能解決現(xiàn)有技術(shù)存在的問(wèn)題。
【附圖說(shuō)明】
[0059]圖1為現(xiàn)有Hadoop的體系結(jié)構(gòu)示意圖;
[0060]圖2為本發(fā)明實(shí)施例的方法流程示意圖;
[0061]圖3為應(yīng)用本發(fā)明實(shí)施例的基于MPP和Hadoop技術(shù)的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理場(chǎng)景的系統(tǒng)結(jié)構(gòu)示意圖;
[0062]圖4為應(yīng)用本發(fā)明實(shí)施例的基于MPP和Hadoop技術(shù)的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理場(chǎng)景的整個(gè)系統(tǒng)工作流程圖;
[0063]圖5為應(yīng)用本發(fā)明實(shí)施例的半結(jié)構(gòu)化數(shù)據(jù)處理引擎的示意圖。
【具體實(shí)施方式】
[0064]下面結(jié)合附圖對(duì)技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。
[0065]本發(fā)明實(shí)施例的一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法,如圖2所示,所述方法包括:
[0066]步驟101、從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);
[0067]步驟102、對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理。
[0068]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:對(duì)于寫(xiě)操作請(qǐng)求,所述將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù),包括:
[0069]啟動(dòng)數(shù)據(jù)處理引擎,所述數(shù)據(jù)處理引擎作為系統(tǒng)架構(gòu)的中間層,用于對(duì)位于所述數(shù)據(jù)處理引擎上層應(yīng)用系統(tǒng)的應(yīng)用數(shù)據(jù)進(jìn)行分析,并調(diào)用位于所述數(shù)據(jù)處理引擎下層的所述MPP+HAD00P混合體系進(jìn)行數(shù)據(jù)處理;通過(guò)所述數(shù)據(jù)處理引擎對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)。
[0070]相應(yīng)的,所述對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理,包括:
[0071 ] 所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的MPP數(shù)據(jù)庫(kù)接口,將所述結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)庫(kù)中并交由MPP數(shù)據(jù)庫(kù)單獨(dú)處理所述結(jié)構(gòu)化數(shù)據(jù);所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的HAD00P Hbase接口,將所述非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中并交由Hbase數(shù)據(jù)庫(kù)單獨(dú)處理所述非結(jié)構(gòu)化數(shù)據(jù)。
[0072]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述通過(guò)所述數(shù)據(jù)處理引擎對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù),包括:
[0073]列出所述半結(jié)構(gòu)化數(shù)據(jù)中所有的分拆行鍵,按照行標(biāo)識(shí)符和列標(biāo)識(shí)符創(chuàng)建得到的新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件;對(duì)于所有需要分拆的行繼續(xù)處理,將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊;將所有的其他行讀出放到新的結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊。
[0074]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:對(duì)于讀操作請(qǐng)求,所述方法還包括:
[0075]所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的MPP數(shù)據(jù)庫(kù)接口,將所述結(jié)構(gòu)化數(shù)據(jù)從MPP數(shù)據(jù)庫(kù)中讀取出來(lái);所述數(shù)據(jù)處理弓I擎調(diào)用所述MPP+HAD00P混合體系中的HAD00P Hbase接口,將所述非結(jié)構(gòu)化數(shù)據(jù)從Hbase數(shù)據(jù)庫(kù)中讀取出來(lái);將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù)。
[0076]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù),包括:
[0077]讀取Hbase中的非結(jié)構(gòu)化數(shù)據(jù);讀取MPP中的結(jié)構(gòu)化數(shù)據(jù),并得到所有的行數(shù);將結(jié)構(gòu)化數(shù)據(jù)按照行標(biāo)識(shí)符和列標(biāo)識(shí)符全部存放到非結(jié)構(gòu)化數(shù)據(jù)中,實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)的封裝。
[0078]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述方法還包括:在執(zhí)行所述分拆或所述組合之前,判斷當(dāng)前的數(shù)據(jù)庫(kù)和表的類型,如果是非結(jié)構(gòu)化數(shù)據(jù)則提示進(jìn)行分拆處理;如果是半結(jié)構(gòu)化數(shù)據(jù),則提示需要從所述MPP數(shù)據(jù)庫(kù)和所述Hbase數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分別讀取以進(jìn)行組合處理。
[0079]本發(fā)明實(shí)施例的一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的系統(tǒng),所述系統(tǒng)包括:
[0080]數(shù)據(jù)處理引擎,用于從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);調(diào)用MPP+HAD00P系統(tǒng)層,使得能對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HAD00P混合體系進(jìn)行處理;
[0081]上層應(yīng)用系統(tǒng)層,用于為所述數(shù)據(jù)處理引擎提供所述待處理數(shù)據(jù);
[0082]MPP+HAD00P系統(tǒng)層,用于接受所述數(shù)據(jù)處理引擎的調(diào)度,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HADOOP混合體系進(jìn)行處理。
[0083]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述數(shù)據(jù)處理引擎,進(jìn)一步包括:
[0084]寫(xiě)操作處理引擎,用于對(duì)于寫(xiě)操作請(qǐng)求的情況下,對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù),并分別調(diào)用MPP數(shù)據(jù)庫(kù)接口和HADOOP Hbase接口觸發(fā)MPP操作處理模塊和Hbase操作處理模塊進(jìn)行數(shù)據(jù)處理;
[0085]MPP操作處理模塊,用于接受所述寫(xiě)操作處理引擎的調(diào)用,將所述結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)庫(kù)中并交由MPP數(shù)據(jù)庫(kù)單獨(dú)處理所述結(jié)構(gòu)化數(shù)據(jù);
[0086]Hbase操作處理模塊,用于接受所述寫(xiě)操作處理引擎的調(diào)用,將所述非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中并交由Hbase數(shù)據(jù)庫(kù)單獨(dú)處理所述非結(jié)構(gòu)化數(shù)據(jù)。
[0087]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述寫(xiě)操作處理引擎,進(jìn)一步用于:
[0088]列出所述半結(jié)構(gòu)化數(shù)據(jù)中所有的分拆行鍵,按照行標(biāo)識(shí)符和列標(biāo)識(shí)符創(chuàng)建得到的新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件;
[0089]對(duì)于所有需要分拆的行繼續(xù)處理,將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊;
[0090]將所有的其他行讀出放到新的結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊。
[0091]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述數(shù)據(jù)處理引擎,進(jìn)一步包括:
[0092]讀操作處理引擎,用于對(duì)于讀操作請(qǐng)求的情況下,分別調(diào)用MPP數(shù)據(jù)庫(kù)接口和HADOOP Hbase接口觸發(fā)MPP操作處理模塊和Hbase操作處理模塊進(jìn)行數(shù)據(jù)處理;
[0093]所述MPP操作處理模塊,進(jìn)一步用于接受所述讀操作處理引擎的調(diào)用,將所述結(jié)構(gòu)化數(shù)據(jù)從MPP數(shù)據(jù)庫(kù)中讀取出來(lái),并交由所述讀操作處理引擎;
[0094]所述Hbase操作處理模塊,進(jìn)一步用于接受所述讀操作處理引擎的調(diào)用,將所述非結(jié)構(gòu)化數(shù)據(jù)從Hbase數(shù)據(jù)庫(kù)中讀取出來(lái),并交由所述讀操作處理引擎;
[0095]所述讀操作處理引擎,還用于將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù)。
[0096]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述讀操作處理引擎,進(jìn)一步用于:
[0097]讀取Hbase中的非結(jié)構(gòu)化數(shù)據(jù);
[0098]讀取MPP中的結(jié)構(gòu)化數(shù)據(jù),并得到所有的行數(shù);
[0099]將結(jié)構(gòu)化數(shù)據(jù)按照行標(biāo)識(shí)符和列標(biāo)識(shí)符全部存放到非結(jié)構(gòu)化數(shù)據(jù)中,實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)的封裝。
[0100]在本發(fā)明實(shí)施例一實(shí)施方式中,一個(gè)具體實(shí)現(xiàn)為:所述系統(tǒng)還包括:
[0101]元數(shù)據(jù)管理模塊,用于在執(zhí)行所述分拆或所述組合之前,判斷當(dāng)前的數(shù)據(jù)庫(kù)和表的類型,如果是非結(jié)構(gòu)化數(shù)據(jù)則提示所述寫(xiě)操作處理引擎進(jìn)行分拆處理;如果是半結(jié)構(gòu)化數(shù)據(jù),則提示需要從所述MPP數(shù)據(jù)庫(kù)和所述Hbase數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分別讀取,以提供給所述讀操作處理引擎進(jìn)行組合處理。
[0102]以下用一現(xiàn)有應(yīng)用場(chǎng)景對(duì)本發(fā)明實(shí)施例闡述如下:
[0103]應(yīng)用本發(fā)明實(shí)施例的一基于MPP和Hadoop技術(shù)的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理場(chǎng)景中,對(duì)于目前現(xiàn)有技術(shù)在處理半結(jié)構(gòu)化數(shù)據(jù)上的諸多問(wèn)題,如目前的NoSQL技術(shù),尤其Hadoop體系下的HDFS和Hbase在處理半結(jié)構(gòu)數(shù)據(jù)方面存在較多的問(wèn)題,其更加適合非結(jié)構(gòu)化數(shù)據(jù),尤其是大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù)。同時(shí),我們也看到MPP技術(shù)和系統(tǒng)更加適合處理結(jié)構(gòu)化數(shù)據(jù)、尤其小規(guī)模的結(jié)構(gòu)化數(shù)據(jù),在深入研究非結(jié)構(gòu)化數(shù)據(jù)的基礎(chǔ)上,基于MPP和Hadoop技術(shù)特點(diǎn)提出了一種新的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理方案,即:利用MPP數(shù)據(jù)庫(kù)和Hadoop數(shù)據(jù)處理體系的各自技術(shù)優(yōu)點(diǎn),針對(duì)半結(jié)構(gòu)化數(shù)據(jù)可以分拆為結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)模式,讓MPP數(shù)據(jù)庫(kù)單獨(dú)處理結(jié)構(gòu)化數(shù)據(jù),而Hadoop技術(shù)體系同時(shí)處理非結(jié)構(gòu)化數(shù)據(jù),也就是說(shuō),讓半結(jié)構(gòu)化數(shù)據(jù)可以分拆為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)成為可行后,結(jié)構(gòu)化數(shù)據(jù)采用非常適合其特點(diǎn)的MPP數(shù)據(jù)庫(kù)處理庫(kù),非結(jié)構(gòu)化數(shù)據(jù)采用非常適合其特點(diǎn)的HDFS+Hbase系統(tǒng)處理,以實(shí)現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)處理的高速、大規(guī)模、高吞吐量、高可擴(kuò)展性等需求。
[0104]對(duì)于,結(jié)構(gòu)化數(shù)據(jù)采用非常適合其特點(diǎn)的MPP數(shù)據(jù)庫(kù)處理庫(kù),非結(jié)構(gòu)化數(shù)據(jù)采用非常適合其特點(diǎn)的HDFS+Hbase系統(tǒng)處理,具體包括以下內(nèi)容:
[0105](I)基于Share-Nothing的MPP數(shù)據(jù)庫(kù)是目前新型的數(shù)據(jù)庫(kù)技術(shù),其有別于傳統(tǒng)的RDBMS系統(tǒng),其在結(jié)構(gòu)化數(shù)據(jù)處理方面性能優(yōu)越,而且具有極強(qiáng)的可擴(kuò)展性,并采用X86架構(gòu)。
[0106](2)大數(shù)據(jù)Hadoop體系下的HDFS和Hbase是目前較為成熟的處理非結(jié)構(gòu)化數(shù)據(jù)技術(shù),其采用列存儲(chǔ)、Key-Value、分布式文件系統(tǒng)、文件存儲(chǔ)等技術(shù),非常適合處理非結(jié)構(gòu)化速據(jù),尤其是一次寫(xiě)多次讀取、大規(guī)模數(shù)據(jù)情況下。
[0107](3)半結(jié)構(gòu)化數(shù)據(jù),因?yàn)槠鋽?shù)據(jù)特點(diǎn),不僅包含較為規(guī)律的結(jié)構(gòu)化數(shù)據(jù),而且還包含非結(jié)構(gòu)化數(shù)據(jù),因此正常情況下將其分拆為結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù),同時(shí)采用XML語(yǔ)言描述非結(jié)構(gòu)化數(shù)據(jù)。
[0108](4)基于MPP數(shù)據(jù)庫(kù)和Hadoop系統(tǒng)實(shí)現(xiàn)混合的數(shù)據(jù)處理系統(tǒng),MPP負(fù)責(zé)處理半結(jié)構(gòu)化中的結(jié)構(gòu)化數(shù)據(jù),而Hadoop系統(tǒng)負(fù)責(zé)處理半結(jié)構(gòu)化數(shù)據(jù)中的非結(jié)構(gòu)化數(shù)據(jù)。
[0109](5)為了管理半結(jié)構(gòu)化數(shù)據(jù)的分拆、合并以及元數(shù)據(jù),需要具體實(shí)現(xiàn)半結(jié)構(gòu)化數(shù)據(jù)處理引擎,其負(fù)責(zé)和上層應(yīng)用系統(tǒng)、下層的MPP、Hadoop系統(tǒng)接口。
[0110]圖3為應(yīng)用本發(fā)明實(shí)施例的基于MPP和Hadoop技術(shù)的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理場(chǎng)景的系統(tǒng)結(jié)構(gòu)示意圖,如圖3所示,該系統(tǒng)主要包括四層:1)上層各種應(yīng)用系統(tǒng);2)半結(jié)構(gòu)化數(shù)據(jù)處理引擎;3)MPP/HDFS客戶端、Hbase數(shù)據(jù)庫(kù);4)MPP數(shù)據(jù)庫(kù)系統(tǒng)、HDFS分布式文件系統(tǒng)。圖3中,半結(jié)構(gòu)化數(shù)據(jù)處理引擎這一層是實(shí)現(xiàn)本方案的關(guān)鍵,其一方面接受上層各種應(yīng)用系統(tǒng)的調(diào)用,另一方面和MPP數(shù)據(jù)庫(kù)系統(tǒng)、HDFS/Hbase系統(tǒng)接口。在具體實(shí)現(xiàn)中,半結(jié)構(gòu)化數(shù)據(jù)處理引擎可以采用X86服務(wù)器,單獨(dú)部署,為了防止SPOF問(wèn)題,其采用Cluster技術(shù)實(shí)現(xiàn)集群。
[0111]圖4為應(yīng)用本發(fā)明實(shí)施例的基于MPP和Hadoop技術(shù)的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理場(chǎng)景的整個(gè)系統(tǒng)工作流程圖,如圖4所示,整個(gè)系統(tǒng)的實(shí)現(xiàn)過(guò)程如下:
[0112]步驟201、首先是整個(gè)系統(tǒng)的初始化,包括Hadoop HDFS的搭建運(yùn)行以及Hbase、MPP的搭建運(yùn)行。同時(shí)還包括系統(tǒng)環(huán)境變量的初始化操作、網(wǎng)絡(luò)初始化操作等;
[0113]步驟202、對(duì)半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行簡(jiǎn)單數(shù)據(jù)清洗,主要是刪除無(wú)效數(shù)據(jù)并對(duì)數(shù)據(jù)的數(shù)據(jù)存放形式進(jìn)行簡(jiǎn)單區(qū)分;
[0114]步驟203、數(shù)據(jù)處理引擎對(duì)所有的半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行區(qū)分,主要區(qū)分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù);
[0115]步驟204、調(diào)用MPP數(shù)據(jù)倉(cāng)庫(kù)接口將步驟203當(dāng)中獲取到的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)倉(cāng)庫(kù)當(dāng)中;
[0116]步驟205、調(diào)用Hadoop Hbase接口將步驟203當(dāng)中獲取到的非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase當(dāng)中;
[0117]步驟206、將MPP數(shù)據(jù)庫(kù)以及Hbase數(shù)據(jù)庫(kù)分布于分布式文件系統(tǒng)HDFS中;
[0118]步驟207、其它應(yīng)用可以直接通過(guò)統(tǒng)一管理接口實(shí)現(xiàn)數(shù)據(jù)傳遞;
[0119]步驟208、各種應(yīng)用進(jìn)行數(shù)據(jù)交互。
[0120]圖5為應(yīng)用本發(fā)明實(shí)施例的半結(jié)構(gòu)化數(shù)據(jù)處理引擎的示意圖,是對(duì)半結(jié)構(gòu)化數(shù)據(jù)處理引擎的進(jìn)一步細(xì)化,對(duì)于半結(jié)構(gòu)化數(shù)據(jù)處理引擎而言,如圖5所示,其功能結(jié)構(gòu)如下:
[0121]半結(jié)構(gòu)化數(shù)據(jù)處理引擎的核心部件包括寫(xiě)操作處理引擎、讀操作處理引擎以及元數(shù)據(jù)管理模塊,元數(shù)據(jù)管理模塊是記錄和管理各種NoSQL操作的關(guān)鍵所在;而讀、寫(xiě)操作處理引擎各自負(fù)責(zé)NoSQL讀操作、寫(xiě)操作的具體讀、寫(xiě)處理。
[0122]如圖5所示,半結(jié)構(gòu)化數(shù)據(jù)處理引擎,主要用于接收到NoSQL寫(xiě)操作時(shí),分拆非結(jié)構(gòu)化數(shù)據(jù)操作為SQL類操作和Hbase操作,然后分別寫(xiě)MPP數(shù)據(jù)庫(kù)、Hbase數(shù)據(jù)庫(kù);而接收到NoSQL讀操作時(shí),根據(jù)信息情況,分別從MPP數(shù)據(jù)庫(kù)和Hbase數(shù)據(jù)庫(kù)讀取數(shù)據(jù);或者單獨(dú)從MPP數(shù)據(jù)庫(kù)或Hbase讀取數(shù)據(jù)。
[0123]同時(shí),在和上層各類應(yīng)用的接口處理中,還可以使用Java類API作為統(tǒng)一的API處理接口方式,因?yàn)镴ava類普遍被各種NoSQL數(shù)據(jù)庫(kù)所采用,而且具有非常好的可移植性,適合各類應(yīng)用。
[0124]利用圖5所示的半結(jié)構(gòu)化數(shù)據(jù)處理引擎進(jìn)行半結(jié)構(gòu)化數(shù)據(jù)處理流程,主要包括讀、寫(xiě)操作、以及非讀寫(xiě)操作;非讀寫(xiě)操作主要是配置、刪除、創(chuàng)建等操作;而讀、寫(xiě)操作處理中最為關(guān)鍵的是數(shù)據(jù)、語(yǔ)句處理。它們的具體處理流程如下:
[0125]一:對(duì)于寫(xiě)操作來(lái)說(shuō),半結(jié)構(gòu)化數(shù)據(jù)處理引擎的寫(xiě)操作具體流程如下:
[0126]{
[0127]1、寫(xiě)操作引擎接收J(rèn)ava類API寫(xiě)操作;
[0128]2、寫(xiě)操作處理引擎分析具體“寫(xiě)”操作的數(shù)據(jù);
[0129]3、如果全部是非結(jié)構(gòu)化數(shù)據(jù),直接調(diào)用Hbase客戶端,直接將數(shù)據(jù)寫(xiě)到Hbase數(shù)據(jù)庫(kù),并寫(xiě)元數(shù)據(jù)到元數(shù)據(jù)管理模塊;跳到步驟X;
[0130]4、如果全部是結(jié)構(gòu)化數(shù)據(jù),需要將NoSQL的寫(xiě)操作更換為SQL寫(xiě)操作;
[0131]5、直接調(diào)用MPP客戶端接口寫(xiě)數(shù)據(jù),處理完成后跳到步驟X ;
[0132]6、如果是非結(jié)構(gòu)化數(shù)據(jù),則首先分拆數(shù)據(jù)為結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù);并寫(xiě)元數(shù)據(jù)到元數(shù)據(jù)管理模塊;
[0133]7、調(diào)用Hbase客戶端,將非結(jié)構(gòu)化數(shù)據(jù)寫(xiě)到Hbase數(shù)據(jù)庫(kù);
[0134]8、轉(zhuǎn)換NoSQL語(yǔ)句為SQL語(yǔ)句,調(diào)用MPP客戶端將數(shù)據(jù)寫(xiě)到MPP數(shù)據(jù)庫(kù)系統(tǒng)中。
[0135]X、將處理結(jié)果返回Java類API。
[0136]}
[0137]二,對(duì)于讀操作來(lái)說(shuō),半結(jié)構(gòu)化數(shù)據(jù)處理引擎的讀操作具體流程如下:
[0138]{
[0139]1、讀操作引擎接收J(rèn)ava類API讀操作;
[0140]2、讀操作處理引擎分析具體“讀”操作的數(shù)據(jù);
[0141]3、如果讀操作的數(shù)據(jù)全部是非結(jié)構(gòu)化數(shù)據(jù),則直接調(diào)用Hbase客戶端接口,讀取數(shù)據(jù),并跳到X ;
[0142]4、如果讀操作的數(shù)據(jù)全部是結(jié)構(gòu)化數(shù)據(jù),則將NoSQL讀語(yǔ)句轉(zhuǎn)化為SQL讀語(yǔ)句;
[0143]5、調(diào)用MPP客戶端接口,讀取數(shù)據(jù),然后跳到X ;
[0144]6、如果讀操作的數(shù)據(jù)是半結(jié)構(gòu)化數(shù)據(jù),首先需要將數(shù)據(jù)分解,分為為結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù);
[0145]7、調(diào)用Hbase客戶端,從Hbase數(shù)據(jù)庫(kù)讀非結(jié)構(gòu)化數(shù)據(jù);
[0146]8、轉(zhuǎn)換NoSQL語(yǔ)句為SQL語(yǔ)句,調(diào)用MPP客戶端從MPP數(shù)據(jù)庫(kù)系統(tǒng)中讀結(jié)構(gòu)化數(shù)據(jù)。
[0147]9、合并結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù);
[0148]X、將處理結(jié)果返回Java類API ;
[0149]}
[0150]三,對(duì)于半結(jié)構(gòu)化數(shù)據(jù)分拆和組裝而言,因?yàn)樯蠈討?yīng)用中不僅存在明顯的SQL操作、非結(jié)構(gòu)化操作,還有半結(jié)構(gòu)化數(shù)據(jù)傳統(tǒng)的處理方法是采用NoSQL技術(shù)處理,因此在寫(xiě)操作的時(shí)候需要對(duì)半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,而在讀的時(shí)候需要對(duì)結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)組裝為半結(jié)構(gòu)化數(shù)據(jù),包括以下內(nèi)容:
[0151]I)對(duì)半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆來(lái)說(shuō),分拆算法如下:
[0152]{
[0153]1、列出所有的分拆行鍵;
[0154]2、按照行、列:標(biāo)識(shí)符創(chuàng)建新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件;
[0155]3、對(duì)于所有需要分拆的行繼續(xù)處理;
[0156]4、將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,跳轉(zhuǎn)到6 ;
[0157]5、將所有的其他行讀出放到新的結(jié)構(gòu)化文件;
[0158]6、存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)管理模塊;
[0159]7、返回處理結(jié)果;
[0160]}
[0161]2)對(duì)結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)組裝為半結(jié)構(gòu)化數(shù)據(jù)來(lái)說(shuō),組裝算法如下:
[0162]{
[0163]1、讀取Hbase中的用戶數(shù)據(jù)A ;
[0164]2、讀取MPP中的用戶數(shù)據(jù)B,并得到所有的行數(shù);
[0165]3、將用戶數(shù)據(jù)B按照行,列:標(biāo)識(shí)符全部存放到用戶數(shù)據(jù)A ;
[0166]4、實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)封裝。
[0167]}
[0168]四,對(duì)于圖5中的元數(shù)據(jù)管理模塊而言,元數(shù)據(jù)管理模塊是讀、寫(xiě)操作處理引擎的幫手,其主要用于是在讀、寫(xiě)操作的時(shí)候能夠清楚地判斷非結(jié)構(gòu)化數(shù)據(jù)庫(kù)。其在實(shí)現(xiàn)上主要通過(guò)庫(kù)隊(duì)列實(shí)現(xiàn),其數(shù)據(jù)結(jié)構(gòu)如下:
[0169]Struct un1n-key{
[0170]Struct un1n-key氺prev ;
[0171]數(shù)據(jù)庫(kù)名稱:字符串;
[0172]表名稱:字符串;
[0173]結(jié)構(gòu)類型:整數(shù)值;/*半結(jié)構(gòu)、結(jié)構(gòu)、非結(jié)構(gòu)*/
[0174]非結(jié)構(gòu)的行值:列表;
[0175]Struct un1n-key氺next
[0176]}
[0177]五,針對(duì)圖5的寫(xiě)操作處理引擎而言,其在處理數(shù)據(jù)庫(kù)、表的時(shí)候,首先需要讀寫(xiě)元數(shù)據(jù)管理模塊,判斷目前的數(shù)據(jù)庫(kù)庫(kù)、表的類型,如果是非結(jié)構(gòu)就采取分拆動(dòng)作;而讀操作在處理的時(shí)候,如果是半結(jié)構(gòu)數(shù)據(jù),其需要從MPP和Hbase庫(kù)中進(jìn)行分別讀取。
[0178]本發(fā)明實(shí)施例基于MPP和Hadoop技術(shù)對(duì)半結(jié)構(gòu)化數(shù)據(jù)實(shí)現(xiàn)快速聯(lián)合處理,與現(xiàn)有技術(shù)相比,具有以下優(yōu)勢(shì):
[0179](I)在基本不增加特別大的成本情況下,能夠有效處理非結(jié)構(gòu)數(shù)據(jù),其采用MPP+HAD00P混合體系進(jìn)行處理。
[0180](2)采用MPP+Hadoop混合技術(shù)能夠有效提高非結(jié)構(gòu)數(shù)據(jù)的性能,尤其是查詢類操作,這樣可以避免HDFS的缺點(diǎn)。
[0181](3)采用MPP+HAD00P混合體系,尤其適合大量小文件情況,性能可以大幅增加。
[0182](4)基于HAD00P+MPP混合技術(shù)體系,還可以有效利用HAD00P在大規(guī)模文件操作時(shí)的可擴(kuò)展性、并行計(jì)算等優(yōu)勢(shì),基本上不降低系統(tǒng)性能。
[0183](5)尤其對(duì)于非結(jié)構(gòu)數(shù)據(jù)比較少但結(jié)構(gòu)化數(shù)據(jù)比較多的情況下,可以大幅提高系統(tǒng)處理性能。
[0184]本發(fā)明實(shí)施例所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)施例的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。這樣,本發(fā)明實(shí)施例不限制于任何特定的硬件和軟件結(jié)合。
[0185]相應(yīng)的,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序用于執(zhí)行本發(fā)明實(shí)施例的半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法。
[0186]以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的方法,其特征在于,所述方法包括: 從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù); 對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HADOOP混合體系進(jìn)行處理。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,對(duì)于寫(xiě)操作請(qǐng)求,所述將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù),包括: 啟動(dòng)數(shù)據(jù)處理引擎,所述數(shù)據(jù)處理引擎作為系統(tǒng)架構(gòu)的中間層,用于對(duì)位于所述數(shù)據(jù)處理引擎上層應(yīng)用系統(tǒng)的應(yīng)用數(shù)據(jù)進(jìn)行分析,并調(diào)用位于所述數(shù)據(jù)處理引擎下層的所述MPP+HADOOP混合體系進(jìn)行數(shù)據(jù)處理; 通過(guò)所述數(shù)據(jù)處理引擎對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù); 相應(yīng)的,所述對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HADOOP混合體系進(jìn)行處理,包括: 所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HADOOP混合體系中的MPP數(shù)據(jù)庫(kù)接口,將所述結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)庫(kù)中并交由MPP數(shù)據(jù)庫(kù)單獨(dú)處理所述結(jié)構(gòu)化數(shù)據(jù); 所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HADOOP混合體系中的HADOOP Hbase接口,將所述非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中并交由Hbase數(shù)據(jù)庫(kù)單獨(dú)處理所述非結(jié)構(gòu)化數(shù)據(jù)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過(guò)所述數(shù)據(jù)處理引擎對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù),包括: 列出所述半結(jié)構(gòu)化數(shù)據(jù)中所有的分拆行鍵,按照行標(biāo)識(shí)符和列標(biāo)識(shí)符創(chuàng)建得到的新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件; 對(duì)于所有需要分拆的行繼續(xù)處理,將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊; 將所有的其他行讀出放到新的結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,對(duì)于讀操作請(qǐng)求,所述方法還包括: 所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的MPP數(shù)據(jù)庫(kù)接口,將所述結(jié)構(gòu)化數(shù)據(jù)從MPP數(shù)據(jù)庫(kù)中讀取出來(lái); 所述數(shù)據(jù)處理引擎調(diào)用所述MPP+HAD00P混合體系中的HADOOP Hbase接口,將所述非結(jié)構(gòu)化數(shù)據(jù)從Hbase數(shù)據(jù)庫(kù)中讀取出來(lái); 將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù)。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù),包括: 讀取Hbase中的非結(jié)構(gòu)化數(shù)據(jù); 讀取MPP中的結(jié)構(gòu)化數(shù)據(jù),并得到所有的行數(shù); 將結(jié)構(gòu)化數(shù)據(jù)按照行標(biāo)識(shí)符和列標(biāo)識(shí)符全部存放到非結(jié)構(gòu)化數(shù)據(jù)中,實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)的封裝。6.根據(jù)權(quán)利要求3或5所述的方法,其特征在于,所述方法還包括:在執(zhí)行所述分拆或所述組合之前,判斷當(dāng)前的數(shù)據(jù)庫(kù)和表的類型,如果是非結(jié)構(gòu)化數(shù)據(jù)則提示進(jìn)行分拆處理;如果是半結(jié)構(gòu)化數(shù)據(jù),則提示需要從所述MPP數(shù)據(jù)庫(kù)和所述Hbase數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分別讀取以進(jìn)行組合處理。7.一種半結(jié)構(gòu)化數(shù)據(jù)快速聯(lián)合處理的系統(tǒng),其特征在于,所述系統(tǒng)包括: 數(shù)據(jù)處理引擎,用于從待處理數(shù)據(jù)中提取半結(jié)構(gòu)化數(shù)據(jù),將所述半結(jié)構(gòu)化數(shù)據(jù)區(qū)分為用結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù);調(diào)用MPP+HADOOP系統(tǒng)層,使得能對(duì)用所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HADOOP混合體系進(jìn)行處理; 上層應(yīng)用系統(tǒng)層,用于為所述數(shù)據(jù)處理引擎提供所述待處理數(shù)據(jù); MPP+HADOOP系統(tǒng)層,用于接受所述數(shù)據(jù)處理引擎的調(diào)度,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)+非結(jié)構(gòu)化數(shù)據(jù)模式描述的數(shù)據(jù)采用MPP+HADOOP混合體系進(jìn)行處理。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述數(shù)據(jù)處理引擎,進(jìn)一步包括: 寫(xiě)操作處理引擎,用于對(duì)于寫(xiě)操作請(qǐng)求的情況下,對(duì)所述半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分拆,得到所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù),并分別調(diào)用MPP數(shù)據(jù)庫(kù)接口和HADOOP Hbase接口觸發(fā)MPP操作處理模塊和Hbase操作處理模塊進(jìn)行數(shù)據(jù)處理; MPP操作處理模塊,用于接受所述寫(xiě)操作處理引擎的調(diào)用,將所述結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到MPP數(shù)據(jù)庫(kù)中并交由MPP數(shù)據(jù)庫(kù)單獨(dú)處理所述結(jié)構(gòu)化數(shù)據(jù); Hbase操作處理模塊,用于接受所述寫(xiě)操作處理引擎的調(diào)用,將所述非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到Hbase數(shù)據(jù)庫(kù)中并交由Hbase數(shù)據(jù)庫(kù)單獨(dú)處理所述非結(jié)構(gòu)化數(shù)據(jù)。9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述寫(xiě)操作處理引擎,進(jìn)一步用于: 列出所述半結(jié)構(gòu)化數(shù)據(jù)中所有的分拆行鍵,按照行標(biāo)識(shí)符和列標(biāo)識(shí)符創(chuàng)建得到的新的非結(jié)構(gòu)化文件和結(jié)構(gòu)化文件; 對(duì)于所有需要分拆的行繼續(xù)處理,將所有的分拆行中的所有列讀出放到新的非結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊; 將所有的其他行讀出放到新的結(jié)構(gòu)化文件,并存放相關(guān)的元數(shù)據(jù)信息到元數(shù)據(jù)處理模塊。10.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)處理引擎,進(jìn)一步包括: 讀操作處理引擎,用于對(duì)于讀操作請(qǐng)求的情況下,分別調(diào)用MPP數(shù)據(jù)庫(kù)接口和HADOOPHbase接口觸發(fā)MPP操作處理模塊和Hbase操作處理模塊進(jìn)行數(shù)據(jù)處理; 所述MPP操作處理模塊,進(jìn)一步用于接受所述讀操作處理引擎的調(diào)用,將所述結(jié)構(gòu)化數(shù)據(jù)從MPP數(shù)據(jù)庫(kù)中讀取出來(lái),并交由所述讀操作處理引擎; 所述Hbase操作處理模塊,進(jìn)一步用于接受所述讀操作處理引擎的調(diào)用,將所述非結(jié)構(gòu)化數(shù)據(jù)從Hbase數(shù)據(jù)庫(kù)中讀取出來(lái),并交由所述讀操作處理引擎; 所述讀操作處理引擎,還用于將所述結(jié)構(gòu)化數(shù)據(jù)和所述非結(jié)構(gòu)化數(shù)據(jù)組合還原為所述半結(jié)構(gòu)化數(shù)據(jù)。11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述讀操作處理引擎,進(jìn)一步用于: 讀取Hbase中的非結(jié)構(gòu)化數(shù)據(jù); 讀取MPP中的結(jié)構(gòu)化數(shù)據(jù),并得到所有的行數(shù); 將結(jié)構(gòu)化數(shù)據(jù)按照行標(biāo)識(shí)符和列標(biāo)識(shí)符全部存放到非結(jié)構(gòu)化數(shù)據(jù)中,實(shí)現(xiàn)新的非結(jié)構(gòu)化數(shù)據(jù)的封裝。12.根據(jù)權(quán)利要求9或11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 元數(shù)據(jù)管理模塊,用于在執(zhí)行所述分拆或所述組合之前,判斷當(dāng)前的數(shù)據(jù)庫(kù)和表的類型,如果是非結(jié)構(gòu)化數(shù)據(jù)則提示所述寫(xiě)操作處理引擎進(jìn)行分拆處理;如果是半結(jié)構(gòu)化數(shù)據(jù),則提示需要從所述MPP數(shù)據(jù)庫(kù)和所述Hbase數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)分別讀取,以提供給所述讀操作處理引擎進(jìn)行組合處理。
【文檔編號(hào)】G06F17/30GK105989117SQ201510080610
【公開(kāi)日】2016年10月5日
【申請(qǐng)日】2015年2月13日
【發(fā)明人】魯瑞, 侯建衛(wèi), 付長(zhǎng)冬
【申請(qǐng)人】中國(guó)移動(dòng)通信集團(tuán)山西有限公司