本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別是一種通用的大數(shù)據(jù)采集字節(jié)流解析系統(tǒng)及其實(shí)現(xiàn)方法。
背景技術(shù):
解析數(shù)據(jù)是數(shù)據(jù)采集中至關(guān)重要的一個(gè)環(huán)節(jié),在大數(shù)據(jù)時(shí)代,數(shù)據(jù)分布廣泛、結(jié)構(gòu)復(fù)雜多樣,給解析帶來很大的困難,每次采集都需要按照不同的數(shù)據(jù)結(jié)構(gòu)編寫解析代碼,這種重復(fù)工作對采集者來說是一種很大的浪費(fèi)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題之一在于提供一種通用的大數(shù)據(jù)采集字節(jié)流解析系統(tǒng),使字節(jié)流解析過程更加標(biāo)準(zhǔn)化、更加可控。
本發(fā)明解決的技術(shù)問題之二在于提供一種通用的大數(shù)據(jù)采集字節(jié)流解析系統(tǒng)的實(shí)現(xiàn)方法,通過字節(jié)流預(yù)處理器和二維表解析器對不同結(jié)構(gòu)的數(shù)據(jù)進(jìn)行統(tǒng)一的解析,避免重復(fù)定義解析過程,能夠大大提高數(shù)據(jù)采集的工作效率。
本發(fā)明解決上述技術(shù)問題之一的技術(shù)方案是:
所述的系統(tǒng)由字節(jié)流預(yù)處理器和二維表解析器兩部份構(gòu)成;
所述的字節(jié)流預(yù)處理器是根據(jù)約定自動校驗(yàn)數(shù)據(jù)并根據(jù)壓縮和加密方式自動選擇相應(yīng)的解壓和解密方法對數(shù)據(jù)進(jìn)行預(yù)處理;
所述的二維表解析器按照字節(jié)流格式定義二維表,用行和行組存儲數(shù)據(jù)信息,其中用行組存儲集合數(shù)據(jù);用列標(biāo)明每個(gè)字段的名稱、數(shù)據(jù)類型和長度;
二維表解析器讀入數(shù)據(jù)字節(jié)流,根據(jù)每一列定義的長度將字節(jié)流分割成多個(gè)字段,再根據(jù)數(shù)據(jù)類型將分割好的字節(jié)流解析成相應(yīng)的信息;通過讀取行或者行組里的多個(gè)行獲取數(shù)據(jù)或者集合信息,通過列的字段名稱讀取數(shù)據(jù)行的具體字段信息。
所述的字節(jié)流預(yù)處理器包括數(shù)據(jù)安全校驗(yàn)、數(shù)據(jù)解壓中心和數(shù)據(jù)解密中心三部分;由數(shù)據(jù)安全校驗(yàn)實(shí)現(xiàn)自動校驗(yàn)數(shù)據(jù);數(shù)據(jù)解壓中心、數(shù)據(jù)解密中心,根據(jù)數(shù)據(jù)需求進(jìn)行解壓或解密。
所述的二維表解析器包括二維表封裝器、二維表數(shù)據(jù)段分割和二維表數(shù)據(jù)段解析三部分;
所述的實(shí)現(xiàn)按照字節(jié)流格式定義二維表,用行和行組存儲數(shù)據(jù)信息,其中用行組存儲集合數(shù)據(jù);用列標(biāo)明每個(gè)字段的名稱、數(shù)據(jù)類型和長度;
所述的二維表數(shù)據(jù)段分割實(shí)現(xiàn)根據(jù)每一列定義的長度將字節(jié)流分割成多個(gè)字段;
所述的二維表數(shù)據(jù)段解析對分割好的字節(jié)流解析成相應(yīng)的信息。
所述的數(shù)據(jù)類型可以是二進(jìn)制、十進(jìn)制、十六進(jìn)制或者字符,長度單位是比特。
本發(fā)明解決上述技術(shù)問題之二的技術(shù)方案是:
所述的方法按照以下流程步驟處理:
第一步,接收到字節(jié)流后,根據(jù)約定自動校驗(yàn)數(shù)據(jù)安全性和完整性,檢查在傳輸過程中數(shù)據(jù)是否被篡改;
第二步,根據(jù)約定的標(biāo)記位自動選擇解壓和解密方法進(jìn)行預(yù)處理,生成完整的明文字節(jié)流;
第三步,根據(jù)字節(jié)流包含數(shù)據(jù)段、每個(gè)數(shù)據(jù)段的長度以及數(shù)據(jù)類型定義二維表,生成二維表解析器;
第四步,將字節(jié)流讀入二維表解析器,根據(jù)定義的列及長度分割成數(shù)據(jù)段,判斷字段是否是集合數(shù)據(jù);
(一)非集合字段:創(chuàng)建數(shù)據(jù)段行,將數(shù)據(jù)段存儲到行中,并用列定義的字段名稱標(biāo)明數(shù)據(jù)段含義;
(二)集合字段:創(chuàng)建行組,用列定義的字段名稱標(biāo)明行組數(shù)據(jù)段含義,根據(jù)集合的大小創(chuàng)建數(shù)據(jù)段行,每個(gè)行存儲集合的一個(gè)元素;
第五步,根據(jù)列定義的數(shù)據(jù)類型將數(shù)據(jù)段解析轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)信息,生成結(jié)構(gòu)化數(shù)據(jù)信息;
第六步,獲取結(jié)構(gòu)化信息,通過讀取行或者行組里的多個(gè)行獲取數(shù)據(jù)或者集合信息,通過列的字段名稱讀取數(shù)據(jù)行的具體字段信息,完成字節(jié)流的解析。
本發(fā)明使字節(jié)流解析過程更加標(biāo)準(zhǔn)化、更加可控。而且,通過字節(jié)流預(yù)處理器和二維表解析器對不同結(jié)構(gòu)的數(shù)據(jù)進(jìn)行統(tǒng)一的解析;不用重復(fù)定義和編寫解析流程代碼,并且對使用者是透明的,使用者只需根據(jù)數(shù)據(jù)的結(jié)構(gòu)定義好二維表,不用關(guān)心其實(shí)現(xiàn)方式。
附圖說明
下面結(jié)合附圖對本發(fā)明進(jìn)一步說明:
圖1是本發(fā)明的架構(gòu)示意圖。
具體實(shí)施方式
如圖1所示,本發(fā)明的字節(jié)流解析組件由字節(jié)流預(yù)處理器和二維表解析器兩部份構(gòu)成。字節(jié)流預(yù)處理器根據(jù)約定自動校驗(yàn)數(shù)據(jù)并根據(jù)壓縮和加密方式自動選擇相應(yīng)的解壓和解密方法對數(shù)據(jù)進(jìn)行預(yù)處理;二維表解析器按照字節(jié)流格式定義二維表,用行和行組存儲數(shù)據(jù)信息,其中用行組存儲集合數(shù)據(jù),用列標(biāo)明字節(jié)流的數(shù)據(jù)結(jié)構(gòu);二維表解析器將字節(jié)流分割成多個(gè)字段,再根據(jù)數(shù)據(jù)類型將分割好的字節(jié)流解析成相應(yīng)的信息,通過二維表讀取解析后的結(jié)構(gòu)化信息。
所述的字節(jié)流預(yù)處理器根據(jù)約定自動校驗(yàn)數(shù)據(jù)安全性和完整性,檢查在傳輸過程中數(shù)據(jù)是否被篡改,然后根據(jù)約定的標(biāo)記位自動選擇解壓和解密方法進(jìn)行預(yù)處理,生成完整的明文字節(jié)流。
所述的二維表解析器按照字節(jié)流格式定義二維表,用行和行組存儲數(shù)據(jù)信息,其中用行組存儲集合數(shù)據(jù),用列標(biāo)明每個(gè)字段的名稱、數(shù)據(jù)類型和長度,數(shù)據(jù)類型可以是二進(jìn)制、十進(jìn)制、十六進(jìn)制或者字符,長度單位是比特;二維表解析器讀入數(shù)據(jù)字節(jié)流,根據(jù)每一列定義的比特長度將字節(jié)流分割成多個(gè)字段,再根據(jù)數(shù)據(jù)類型將分割好的字節(jié)流解析成相應(yīng)的信息;通過讀取行或者行組里的多個(gè)行獲取數(shù)據(jù)或者集合信息,通過列的字段名稱讀取數(shù)據(jù)行的具體字段信息。
所述的字節(jié)流解析組件,不用重復(fù)定義和編寫解析流程代碼,并且對使用者是透明的,使用者只需根據(jù)數(shù)據(jù)的結(jié)構(gòu)定義好二維表,不用關(guān)心其實(shí)現(xiàn)方式。
如圖1所示,大數(shù)據(jù)采集字節(jié)流解析組件及方法的詳細(xì)實(shí)施流程為:
第一步,接收到字節(jié)流后,根據(jù)約定自動校驗(yàn)數(shù)據(jù)安全性和完整性,檢查在傳輸過程中數(shù)據(jù)是否被篡改。
第二步,根據(jù)約定的標(biāo)記位自動選擇解壓和解密方法進(jìn)行預(yù)處理,生成完整的明文字節(jié)流;
第三步,根據(jù)字節(jié)流包含數(shù)據(jù)段、每個(gè)數(shù)據(jù)段的長度以及數(shù)據(jù)類型定義二維表,生成二維表解析器;
第四步,將字節(jié)流讀入二維表解析器,根據(jù)定義的列及長度分割成數(shù)據(jù)段,判斷字段是否是集合數(shù)據(jù)。
(一)非集合字段:創(chuàng)建數(shù)據(jù)段行,將數(shù)據(jù)段存儲到行中,并用列定義的字段名稱標(biāo)明數(shù)據(jù)段含義。
(二)集合字段:創(chuàng)建行組,用列定義的字段名稱標(biāo)明行組數(shù)據(jù)段含義,根據(jù)集合的大小創(chuàng)建數(shù)據(jù)段行,每個(gè)行存儲集合的一個(gè)元素。
第五步,根據(jù)列定義的數(shù)據(jù)類型將數(shù)據(jù)段解析轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)信息,生成結(jié)構(gòu)化數(shù)據(jù)信息;
第六步,獲取結(jié)構(gòu)化信息,通過讀取行或者行組里的多個(gè)行獲取數(shù)據(jù)或者集合信息,通過列的字段名稱讀取數(shù)據(jù)行的具體字段信息,完成字節(jié)流的解析。