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