一種基于HBase的智能交通領(lǐng)域卡口數(shù)據(jù)存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于智能交通領(lǐng)域,具體涉及一種基于HBase的智能交通領(lǐng)域卡口數(shù)據(jù)存 儲(chǔ)方法。
【背景技術(shù)】
[0002] 隨著交通工具的大力普及與各種交通設(shè)施的巨增,交通系統(tǒng)所面臨的數(shù)據(jù)壓力也 成幾何倍數(shù)的增長(zhǎng)。面對(duì)如此海量的數(shù)據(jù)壓力,Hadoop作為大數(shù)據(jù)處理領(lǐng)域的首選技術(shù)框 架,在企業(yè)中得到了大量的應(yīng)用。而其中的HBase以高性能高吞吐量的特性成為了大數(shù)據(jù) 存儲(chǔ)的首選技術(shù)目標(biāo)。那么如何有效地利用HBase的特性,充分發(fā)揮其集群性能,實(shí)現(xiàn)數(shù)據(jù) 的高效檢索。HBase是將數(shù)據(jù)按照表、行和列進(jìn)行存儲(chǔ),其數(shù)據(jù)類(lèi)型只有字符串,而要想訪問(wèn) 其中的數(shù)據(jù),只有單個(gè)Rowkey訪問(wèn)、通過(guò)Rowkey的Range訪問(wèn)、通過(guò)全表掃描Rowkey這3 種方式,它不支持條件查詢(xún)和Orderby等查詢(xún)。
[0003] 同時(shí),由于HBase是分布式數(shù)據(jù)庫(kù),采用LSM設(shè)計(jì)解決了磁盤(pán)隨機(jī)寫(xiě)的問(wèn)題(即 使用了順序?qū)懕P(pán)的方式)。在高并發(fā)的數(shù)據(jù)寫(xiě)入時(shí)會(huì)按照Rowkey分配相應(yīng)的Region,若 Rowkey本身存在時(shí)間或其他的順序則會(huì)出現(xiàn)單臺(tái)機(jī)器繁忙而其他服務(wù)器相對(duì)空閑的情況, 從而影響集群整體性能。因此,對(duì)于Rowkey還需要進(jìn)行散列化設(shè)計(jì),以避免熱點(diǎn)現(xiàn)象。
【發(fā)明內(nèi)容】
[0004] 為了解決目前智能交通行業(yè)海量卡口數(shù)據(jù)的高性能并發(fā)讀寫(xiě)要求,本發(fā)明提供一 種基于HBase的智能交通領(lǐng)域卡口數(shù)據(jù)存儲(chǔ)方法。此方法結(jié)合HBase自身的特點(diǎn),融合卡 口數(shù)據(jù)的讀寫(xiě)場(chǎng)景,對(duì)表進(jìn)行定制化Rowkey設(shè)計(jì),以便于相關(guān)業(yè)務(wù)的快速高效查詢(xún),使得 查詢(xún)結(jié)果能全局按時(shí)間倒序排列,為數(shù)據(jù)的進(jìn)一步統(tǒng)計(jì)分析及研判奠定良好的基礎(chǔ)。
[0005] 本發(fā)明的技術(shù)解決方案:
[0006] -種基于HBase的智能交通領(lǐng)域卡口數(shù)據(jù)存儲(chǔ)方法,其特殊之處在于:包括以下 步驟:
[0007] 1】建立主表:
[0008] 根據(jù)業(yè)務(wù)需要,將卡口數(shù)據(jù)的主要字段按一定順序組合成主表Rowkey,并按照主 表Rowkey的編碼順序存儲(chǔ);列族中的特定列存儲(chǔ)為所有字段組合成的JS0N格式串;
[0009] 2】建立二次索引表:
[0010] 將主表中查詢(xún)性能低的字段或不支持查詢(xún)的字段組合成索引Rowkey,并按照索 引Rowkey的編碼順序存儲(chǔ),同時(shí)在索引Rowkey前加哈希散列,列族中的列存儲(chǔ)為主表 Rowkey〇
[0011] 上述卡口數(shù)據(jù)包括設(shè)備編號(hào)、方向編碼、車(chē)道號(hào)、號(hào)牌號(hào)碼、號(hào)牌顏色、號(hào)牌種類(lèi)、 車(chē)輛速度、經(jīng)過(guò)時(shí)間、車(chē)身顏色、車(chē)輛分類(lèi)、車(chē)輛類(lèi)型、車(chē)輛品牌和過(guò)車(chē)圖片地址,
[0012] 在主表Rowkey中將號(hào)牌號(hào)碼和設(shè)備編號(hào)前置。
[0013] 上述二次索引表的索引Rowkey中包括號(hào)牌顏色。
[0014] 本發(fā)明所具有的優(yōu)點(diǎn):
[0015] 1、本發(fā)明能夠有效的提高海量數(shù)據(jù)訪問(wèn)和查詢(xún)性能,并能夠良好的圍繞號(hào)牌號(hào)碼 而展開(kāi)的相關(guān)數(shù)據(jù)挖掘提供高性能保障,如套牌分析、區(qū)域碰撞、車(chē)輛頻度、落腳點(diǎn)分析等 數(shù)據(jù)研判功能。同時(shí)能夠較分散的插入數(shù)據(jù),顯著提高HBase的Region的并行性能,支持 Rowkey級(jí)別的設(shè)備編號(hào)查詢(xún)、支持時(shí)間段、號(hào)牌顏色的快速查詢(xún);查詢(xún)結(jié)果自動(dòng)以時(shí)間倒 序排列,滿(mǎn)足查看最近記錄的要求;能夠良好的支持按時(shí)間段獲取卡口數(shù)據(jù),為卡口數(shù)據(jù)的 快速統(tǒng)計(jì)分析建立良好的基礎(chǔ)。
[0016] 2、應(yīng)用本發(fā)明的存儲(chǔ)方法在業(yè)務(wù)展示卡口列表時(shí)只需要獲取Rowkey即可,在節(jié) 省網(wǎng)絡(luò)數(shù)據(jù)傳輸量和提高速度的同時(shí),極大的提升了系統(tǒng)性能;
[0017] 3、通過(guò)測(cè)試發(fā)現(xiàn),實(shí)驗(yàn)室5臺(tái)服務(wù)器搭建的集群下,利用此設(shè)計(jì)方式存儲(chǔ)的10億 數(shù)據(jù),精確查詢(xún)平均響應(yīng)時(shí)間160毫秒,多條件模糊查詢(xún)平均響應(yīng)時(shí)間300毫秒。在55億 數(shù)據(jù)的環(huán)境下,精確查詢(xún)平均響應(yīng)時(shí)間162毫秒,多條件模糊查詢(xún)平均響應(yīng)時(shí)間1028毫秒。
【附圖說(shuō)明】
[0018] 圖1為本發(fā)明主表Rowkey設(shè)計(jì)示意圖;
[0019] 圖2為本發(fā)明索引表Rowkey設(shè)計(jì)示意圖;
[0020] 圖3為本發(fā)明主表數(shù)據(jù)邏輯示意圖;
[0021] 圖4為本發(fā)明索引表數(shù)據(jù)邏輯示意圖。
【具體實(shí)施方式】
[0022] 在智能交通領(lǐng)域,面對(duì)海量的卡口數(shù)據(jù),將HBase里的卡口表分為主表和二次索 引表。
[0023] 主表存儲(chǔ)卡口數(shù)據(jù),主要包括設(shè)備編號(hào)、方向編碼、車(chē)道號(hào)、號(hào)牌號(hào)碼、號(hào)牌顏色、 號(hào)牌種類(lèi)、車(chē)輛速度、經(jīng)過(guò)時(shí)間、車(chē)身顏色、車(chē)輛分類(lèi)、車(chē)輛類(lèi)型、車(chē)輛品牌和過(guò)車(chē)圖片地址 等數(shù)據(jù)。為了支持號(hào)牌號(hào)碼的快速高效查詢(xún),以及眾多的數(shù)據(jù)研判業(yè)務(wù)的需要,在主表的 Rowkey設(shè)計(jì)上需要將號(hào)牌號(hào)碼和設(shè)備編號(hào)前置,Rowkey后面的信息則以具體的業(yè)務(wù)來(lái)判 斷,原則上將需要進(jìn)行相關(guān)查詢(xún)的字段都應(yīng)該加上。
[0024] 二次索引表存儲(chǔ)卡口數(shù)據(jù)的時(shí)間索引,同時(shí)對(duì)時(shí)間進(jìn)行reverse處理,列族中的 列存儲(chǔ)為主表的Rowkey,使得數(shù)據(jù)能按時(shí)間自動(dòng)倒序排列,再通過(guò)兩張表的這種關(guān)聯(lián)關(guān)系, 良好地彌補(bǔ)了主表無(wú)法支持按時(shí)間快速查詢(xún)的需求。
[0025] 同時(shí)考慮到交通業(yè)務(wù)中經(jīng)常有按照號(hào)牌顏色查詢(xún)的需求,需要將號(hào)牌顏色的信息 加入到二次索引表的Rowkey中,以支持單純的查詢(xún)索引表就能夠?qū)ふ以谀硞€(gè)時(shí)間段某個(gè) 地點(diǎn)經(jīng)過(guò)的某某號(hào)牌顏色的車(chē)輛信息。在實(shí)際的業(yè)務(wù)需求中,根據(jù)兩張表Rowkey設(shè)計(jì)的特 點(diǎn),結(jié)合不同的查詢(xún)條件來(lái)組合其Rowkey,再根據(jù)這一組合來(lái)選擇查詢(xún)主表還是索引表,從 而達(dá)到快速獲取查詢(xún)結(jié)果的目的。
[0026] 如圖1所不,主表的Rowkey里包括的信息主要有號(hào)牌號(hào)碼、設(shè)備編號(hào)、車(chē)道號(hào)、方 向編碼、車(chē)輛速度、號(hào)牌顏色、號(hào)牌種類(lèi)、經(jīng)過(guò)時(shí)間等信息。這些信息是在數(shù)據(jù)以列表展示時(shí) 所需要的,本設(shè)計(jì)就使得在數(shù)據(jù)展示時(shí)只需要獲取Rowkey就可以了,顯然能極大的提高查 詢(xún)性能。
[0027] 將號(hào)牌號(hào)碼和設(shè)備編號(hào)排在Rowkey的前兩個(gè)位置,一方面,號(hào)牌號(hào)碼本身具有隨 機(jī)性,可以有效的避免熱點(diǎn)寫(xiě)入問(wèn)題;另一方面,能夠支持號(hào)牌號(hào)碼的快速高效查詢(xún)。而在 智能交通的相關(guān)業(yè)務(wù)系統(tǒng)中,號(hào)牌號(hào)碼是各業(yè)務(wù)查詢(xún)及數(shù)據(jù)分析與挖掘的主要屬性,因此 對(duì)于號(hào)牌的快速高效查詢(xún)就顯得尤為重要了。比如,在地圖業(yè)務(wù)中對(duì)于行車(chē)軌跡的查詢(xún)及 路線的展示,研判系統(tǒng)中套牌車(chē)的分析等業(yè)務(wù),都是以號(hào)牌號(hào)碼作為主要查詢(xún)字段的。設(shè)備 編號(hào)是記錄卡口位置的,也就是通過(guò)此編號(hào)與具體的地圖經(jīng)煒度相結(jié)合來(lái)記錄過(guò)車(chē)的卡口 所在點(diǎn),通過(guò)它與號(hào)牌相互