何家輝,趙卓峰,張 寬,張 智
1(北方工業(yè)大學(xué) 數(shù)據(jù)工程研究院,北京 100144)
2(大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100144)
高速(Origin-Destination,OD)數(shù)據(jù)是指高速路網(wǎng)內(nèi)從特定的起點(diǎn)到終點(diǎn)之間出行信息的相關(guān)數(shù)據(jù),如起點(diǎn)到終點(diǎn)之間的通行流量、旅行時(shí)間等數(shù)據(jù).高速OD 數(shù)據(jù)中包含了高速公路整體路網(wǎng)的運(yùn)行狀態(tài)、高速公路出行特征、車流量的時(shí)空分布等多方面重要信息,對(duì)高速公路的規(guī)劃、管理、維護(hù)及養(yǎng)護(hù)、衡量區(qū)域經(jīng)濟(jì)發(fā)展?fàn)顩r及地區(qū)間的社會(huì)經(jīng)濟(jì)交流具有重要的參考意義.
傳統(tǒng)高速公路OD 數(shù)據(jù)的獲取方法大多采用定期調(diào)查的方式,通過特定的數(shù)據(jù)收集方式(甚至人工)得到一定時(shí)期內(nèi)的高速OD 數(shù)據(jù),往往需要耗費(fèi)大量時(shí)間和人力,而且數(shù)據(jù)的精度難以保證[1–3].此外,一些研究人員在高速公路斷面通行量檢測(cè)系統(tǒng)基礎(chǔ)上通過廣義最小二乘法估算的方法來估計(jì)時(shí)變的OD 數(shù)據(jù)[4].高速公路收費(fèi)數(shù)據(jù)由于需要根據(jù)車輛進(jìn)出收費(fèi)站信息來收取費(fèi)用,其中蘊(yùn)含了OD 分析所需要的時(shí)空信息,而且收費(fèi)數(shù)據(jù)十分準(zhǔn)確.因此,相對(duì)于前述方法,其可用來生成更加精細(xì)化、更加全面的高速公路OD 數(shù)據(jù).
高速公路收費(fèi)數(shù)據(jù)中包含了特定車輛進(jìn)入某收費(fèi)站的時(shí)間和離開另一收費(fèi)站的時(shí)間,可以看作是一種收費(fèi)站點(diǎn)之間天然的OD 數(shù)據(jù).基于高速公路收費(fèi)數(shù)據(jù)可以計(jì)算得到收費(fèi)站點(diǎn)之間在任意時(shí)間周期內(nèi)的出行量、旅行時(shí)間等OD 數(shù)據(jù),也可以針對(duì)不同車輛類型的細(xì)分得到各類車輛獨(dú)自的OD 數(shù)據(jù).然而,由于高速公路出行的不斷增加,高速公路收費(fèi)數(shù)據(jù)規(guī)模也越來越大,一個(gè)大省的收費(fèi)數(shù)據(jù)一個(gè)月可達(dá)到數(shù)億條,而收費(fèi)站點(diǎn)也接近1000 個(gè),意味著由此建立的一個(gè)OD 矩陣有百萬數(shù)據(jù).如果按照1 小時(shí)的時(shí)間周期建立OD 數(shù)據(jù)矩陣,并且針對(duì)出行量、旅行時(shí)間等不同指標(biāo)和不同車輛類型分別統(tǒng)計(jì),則一天需要生成數(shù)百個(gè)OD 數(shù)據(jù)矩陣.因此,無論是在OD 數(shù)據(jù)矩陣的計(jì)算方面還是OD 數(shù)據(jù)矩陣的存儲(chǔ)方面都對(duì)高速公路信息系統(tǒng)建設(shè)帶來了極大的挑戰(zhàn).張晶等提出,處理海量數(shù)據(jù),必然要面對(duì)巨大的計(jì)算量,一般的解決方法是采用分布式計(jì)算,將計(jì)算任務(wù)分配到多臺(tái)機(jī)器上并行處理,從而提高運(yùn)算速度[5].
以Hadoop 為代表的大數(shù)據(jù)技術(shù)的出現(xiàn)為高速公路OD 數(shù)據(jù)的計(jì)算和存儲(chǔ)提供了新的技術(shù)思路,Hadoop是一個(gè)在集群上處理海量數(shù)據(jù)的開源代碼框架,它具有分割大規(guī)模數(shù)據(jù)、合理分配任務(wù)并執(zhí)行的特性,在很多大型網(wǎng)站上已經(jīng)得到了應(yīng)用,是目前最廣泛應(yīng)用的開源云計(jì)算平臺(tái)[6,7].本文將首先給出基于收費(fèi)數(shù)據(jù)的高速公路OD 數(shù)據(jù)邏輯表示模型和計(jì)算方式定義,在此基礎(chǔ)上進(jìn)而研究了基于MapReduce 的統(tǒng)計(jì)車輛平均旅行時(shí)間和統(tǒng)計(jì)車流量的2 種OD 矩陣生成算法和基于HBase 的高速公路OD 數(shù)據(jù)矩陣列式存儲(chǔ)模型,其中,統(tǒng)計(jì)車輛平均旅行時(shí)間的OD 矩陣可以掌握高速公路車輛的行駛情況,統(tǒng)計(jì)車流量的OD 矩陣可以更加清晰的反應(yīng)出該路段的擁堵情況,通過實(shí)驗(yàn)結(jié)果對(duì)比得出結(jié)論,給出總結(jié).
定義1.收費(fèi)站s,高速公路上所有的收費(fèi)站所在位置,定義為S=(s1,s2,···,sn),s=(id,type),s∈S,其中id是收費(fèi)站的編號(hào),type為收費(fèi)站類別,進(jìn)站口type的值為0,出站口type的值為1.
定義2.車輛收費(fèi)數(shù)據(jù)L,車輛收費(fèi)數(shù)據(jù)是指高速公路各個(gè)收費(fèi)站點(diǎn)捕獲的車輛收費(fèi)數(shù)據(jù),定義為L={l1,l2,···,ln},l=(vi,sik),其中vi代表車輛的車牌號(hào)碼,sik表示車輛vi經(jīng)過收費(fèi)站點(diǎn)sk的 時(shí)間,sk表 示車輛vi經(jīng)過的收費(fèi)站點(diǎn).
定義3.車輛類別VType,車輛分為多種類別,如大貨車,大客車,小汽車等,不同類型的車輛使用不同類型的編號(hào).
定義4.車輛OD 矩陣D,高速公路上的車輛進(jìn)站點(diǎn)和出站點(diǎn)為行和列構(gòu)成的矩陣,定義為D=(d1,d2,d3,···,dn),這里每一個(gè)dm可表示為dm=(am11,am12,am13,···,amij,···,amnn),其中m表示時(shí)間段區(qū)間(ta,tb),矩陣每一個(gè)元素的值aij為車輛的出行時(shí)間、速度、數(shù)量等對(duì)車輛的不同度量,體現(xiàn)為不同形式的值.
基于以上定義,將高速公路OD 矩陣劃分為靜態(tài)OD 矩陣和動(dòng)態(tài)OD 矩陣,其中,靜態(tài)OD 矩陣的元素aij代表某段時(shí)間以收費(fèi)站點(diǎn)si為起點(diǎn),sj為終點(diǎn)的車輛交通出行量;而動(dòng)態(tài)OD 矩陣是一個(gè)矩陣序列,與時(shí)間的相關(guān)性遠(yuǎn)大于靜態(tài)OD 矩陣,動(dòng)態(tài)OD 矩陣的每一個(gè)元素amij表示以收費(fèi)站點(diǎn)si為起點(diǎn),sj為終點(diǎn)在時(shí)間段m內(nèi)的交通出行量.
高速公路OD 數(shù)據(jù)最明顯的內(nèi)容即為車輛駛?cè)腭偝龈咚俚臅r(shí)間和地點(diǎn),為了能夠明顯的反應(yīng)高速公路車輛行駛情況,將收費(fèi)數(shù)據(jù)生成幾類OD 矩陣,例如統(tǒng)計(jì)高速公路車輛旅行時(shí)間的OD 矩陣,統(tǒng)計(jì)車流量的OD 矩陣,統(tǒng)計(jì)兩站點(diǎn)間車流量和平均旅行時(shí)間的OD 矩陣,統(tǒng)計(jì)不同車型的行駛速度的OD 矩陣等,本文中主要研究其中兩類,第一類為統(tǒng)計(jì)高速公路所有類型車輛旅行時(shí)間的OD 矩陣;第二類為統(tǒng)計(jì)高速公路所有類型車流量的OD 矩陣.其中各參數(shù)的含義如下:
(1)統(tǒng)計(jì)量(statistics):該OD 矩陣對(duì)應(yīng)的表統(tǒng)計(jì)的指標(biāo),即高速公路所有車型的平均旅行時(shí)間和車流量.
(2)時(shí)間區(qū)間(period):用于表明統(tǒng)計(jì)對(duì)象的時(shí)間屬性,一個(gè)時(shí)間區(qū)間由一個(gè)開始時(shí)間點(diǎn)(startInstant)和一個(gè)結(jié)束時(shí)間點(diǎn)(endInstant)構(gòu)成.
(3)進(jìn)站點(diǎn)(stationIN):車輛駛?cè)敫咚俚恼军c(diǎn)位置編號(hào).
(4)出站點(diǎn)(stationOUT):車輛駛出高速的站點(diǎn)位置編號(hào).
(5)值(value):度量統(tǒng)計(jì)量的值,例如2493 秒(旅行時(shí)間OD 矩陣)或479 輛(車流量OD 矩陣).
2.2.1 統(tǒng)計(jì)高速公路車輛旅行時(shí)間OD 矩陣
該矩陣是統(tǒng)計(jì)一定時(shí)間內(nèi)出站車輛與其進(jìn)站點(diǎn)間的平均旅行時(shí)間.該OD 矩陣計(jì)算所需的車輛信息要通過數(shù)據(jù)中的出站時(shí)間進(jìn)行篩選.在計(jì)算平均時(shí)間前需要將符合時(shí)間的車輛收費(fèi)數(shù)據(jù)過濾掉車牌號(hào)等無效信息,保留進(jìn)出站時(shí)間.平均旅行時(shí)間需要把所有進(jìn)出站點(diǎn)相同的車輛旅行時(shí)間作平均計(jì)算.將平均旅行時(shí)間放入OD 矩陣中,便于更直觀、更方便的掌握高速公路整體路網(wǎng)的運(yùn)行狀態(tài),便于對(duì)高速公路進(jìn)行調(diào)控.統(tǒng)計(jì)高速公路車輛旅行時(shí)間的OD 矩陣的邏輯模型如圖1所示.
圖1 旅行時(shí)間OD 矩陣邏輯模型
統(tǒng)計(jì)旅行時(shí)間OD 矩陣的計(jì)算流程如圖2所示.
第1 步.設(shè)置統(tǒng)計(jì)數(shù)據(jù)的時(shí)間段.
第2 步.讀取一條數(shù)據(jù) 根據(jù)統(tǒng)計(jì)的時(shí)間間隔判斷該數(shù)據(jù)的出站時(shí)間是否在該時(shí)間間隔內(nèi).
第3 步.如果是在時(shí)間間隔內(nèi),查找該數(shù)據(jù)對(duì)應(yīng)的車輛的進(jìn)出站時(shí)間和進(jìn)出站ID.否則判斷是否有未遍歷到的數(shù)據(jù),若仍有未遍歷到的數(shù)據(jù),則讀取另一條數(shù)據(jù),否則重新設(shè)置統(tǒng)計(jì)數(shù)據(jù)的時(shí)間段.
第4 步.取出站時(shí)間滿足統(tǒng)計(jì)時(shí)間間隔的完整數(shù)據(jù),用進(jìn)出站時(shí)間計(jì)算該條數(shù)據(jù)的旅行時(shí)間.
第5 步.找到該路線所有車輛的旅行時(shí)間并求平均值,將旅行時(shí)間平均值放入OD 矩陣中.
圖2 統(tǒng)計(jì)車輛旅行時(shí)間OD 矩陣的計(jì)算流程
2.2.2 統(tǒng)計(jì)高速公路車流量OD 矩陣
該矩陣是統(tǒng)計(jì)一段時(shí)間間隔內(nèi)兩進(jìn)出點(diǎn)間車輛數(shù)目.該OD 矩陣計(jì)算所需的的車輛信息需要過濾掉收費(fèi)信息中的員工編號(hào)、進(jìn)站欄位等等無效信息,再依據(jù)數(shù)據(jù)中的進(jìn)出站時(shí)間篩選.該OD 矩陣需要的車流量信息需要通過依據(jù)進(jìn)出站點(diǎn)名稱篩選統(tǒng)計(jì)兩進(jìn)出站點(diǎn)間流量.將流量放進(jìn)OD 矩陣中能夠更加清晰、直觀的反應(yīng)兩進(jìn)出站口間車流量情況,車輛擁堵狀況,方便及時(shí)對(duì)高速車流量進(jìn)行調(diào)控,減少擁堵情況,降低事故發(fā)生機(jī)率.統(tǒng)計(jì)高速公路車流量的OD 矩陣的邏輯模型如圖3所示.
統(tǒng)計(jì)車流量OD 矩陣的計(jì)算流程如圖4所示.
圖3 車流量OD 矩陣邏輯模型
圖4 統(tǒng)計(jì)車流量OD 矩陣的計(jì)算流程
第1 步.設(shè)置統(tǒng)計(jì)數(shù)據(jù)的時(shí)間間隔.
第2 步.讀取一條數(shù)據(jù),根據(jù)統(tǒng)計(jì)的時(shí)間間隔判斷該數(shù)據(jù)的出入站時(shí)間是否在該時(shí)間間隔內(nèi).
第3 步.如果是在時(shí)間間隔內(nèi),查找該數(shù)據(jù)對(duì)應(yīng)的車輛的進(jìn)出站ID 和時(shí)間、車輛牌照信息.否則判斷是否有未遍歷到的數(shù)據(jù),若仍有未遍歷到的數(shù)據(jù),則讀取另一條數(shù)據(jù),否則重新設(shè)置統(tǒng)計(jì)數(shù)據(jù)的時(shí)間段.
第4 步.取進(jìn)出站時(shí)間滿足統(tǒng)計(jì)時(shí)間間隔的完整數(shù)據(jù),將相同路徑的車流量疊加,最終車流量放入流量OD 矩陣中.
HBase 是Hadoop 家族中的NoSQL 數(shù)據(jù)庫,是一個(gè)高可靠性、高性能、列存儲(chǔ)、可伸縮、支持實(shí)時(shí)讀寫、面向聯(lián)機(jī)事物處理、分布式的大型數(shù)據(jù)存儲(chǔ)系統(tǒng).底層的Hadoop 分布式文件系統(tǒng)HDFS 具有高容錯(cuò)性且可以被部署在低價(jià)的硬件設(shè)備之上[8,9].
HBase 表主要由以下幾部分構(gòu)成:
表(table):HBASE 在表中組織數(shù)據(jù),表名是字符串和字符的組合.
行(row):表中數(shù)據(jù)按水平劃分為多行,每行由唯一的rowkey 確定.
行健(rowkey):是行的唯一標(biāo)識(shí)數(shù)據(jù),沒有數(shù)據(jù)類型,一般是一個(gè)字節(jié)數(shù)組.
列族(Column Family,CF):數(shù)據(jù)在豎直方向劃分成多個(gè)列族,列族要預(yù)先定義,且不容易修改,每行數(shù)據(jù)都擁有相同的列族,但是可能有些行的數(shù)據(jù)為空,列族是字符串和字符的組合.
列限定符(Column Qualifier,CQ,也叫列標(biāo)識(shí)):數(shù)據(jù)在列族中的位置是通過列標(biāo)識(shí)指定的,每行的列標(biāo)識(shí)可以不同,列標(biāo)識(shí)沒有數(shù)據(jù)類型,一般是一個(gè)字節(jié)數(shù)組.
單元(cell):單元是行健(rowkey)、列族(column family)、列限定符(column qualifier)的組合,這些存儲(chǔ)在單元中的數(shù)據(jù)被稱為單元數(shù)據(jù).
時(shí)間戳(timestamp):單元數(shù)據(jù)是有版本的,每一個(gè)單元數(shù)據(jù)對(duì)應(yīng)一個(gè)版本,由時(shí)間戳來指定.
統(tǒng)計(jì)高速公路車輛旅行時(shí)間的OD 矩陣在HBASE中存儲(chǔ)模型如表1所示.將設(shè)置的時(shí)間段、進(jìn)站ID、出站ID 作為RowKey,將車輛的平均旅行時(shí)間作為value.
表1 車輛旅行時(shí)間OD 矩陣物理模型
統(tǒng)計(jì)高速公路車流量的OD 矩陣物理模型如表2所示.將設(shè)置的時(shí)間段、進(jìn)站ID、出站ID 作為rowkey,將車流量作為value.
表2 車流量OD 矩陣物理模型
MapReduce 計(jì)算框架由Input,Map,Shuffle,Reduce,Output 5 個(gè)部分組成.Input 階段:讀入數(shù)據(jù)并設(shè)置統(tǒng)計(jì)時(shí)間段.
Map 階段:讀取所有輸入數(shù)據(jù),對(duì)每行數(shù)據(jù)進(jìn)行解析.以“出站時(shí)間+進(jìn)站點(diǎn)+出站點(diǎn)”作為key,計(jì)算旅行時(shí)間作為value.
Shuffle 階段:key 值相同的value 會(huì)存入一組,傳送到Reduce.
Reduce 階段:針對(duì)每個(gè)key,統(tǒng)計(jì)value 的個(gè)數(shù)count,并計(jì)算value 和sum,計(jì)算value 均值sum/count 作為新輸出value.
Output 階段:以key-value 的方式輸出計(jì)算結(jié)果,最終的key 為“出站時(shí)間+進(jìn)站點(diǎn)+出站點(diǎn)”,value 為“平均旅行時(shí)間”.
該算法實(shí)現(xiàn)的流程如圖5所示,偽代碼如算法1所示.
圖5 旅行時(shí)間OD 矩陣實(shí)現(xiàn)流程
算法1.旅行時(shí)間OD 矩陣計(jì)算方法輸入:高速流量數(shù)據(jù)輸出:旅行時(shí)間OD 統(tǒng)計(jì)信息1.function MAP(key,value,context)2.items=value.split("r");3.timeIn=items[4];4.timeOut=items[7];5.key=items[7].split(":")[0] + items[3] + items[6];6.odTime=timeOut – timeIn;7.context.write(key,odTime);8.end function 9.function REDUCE(key,Iterable
14.totaltime=totaltime + TIME.getTOTALTIME();15.count + +;16.end for 17.avg=totaltime/count;18.context.write(key,avg);19.end function
車流量OD 矩陣計(jì)算方法的實(shí)現(xiàn)與旅行時(shí)間類似.主要區(qū)別在Reduce 階段,需要對(duì)進(jìn)出站的時(shí)間進(jìn)行過濾.
Input 階段:讀入數(shù)據(jù)并設(shè)置統(tǒng)計(jì)時(shí)間段.
Map 階段:讀取所有輸入數(shù)據(jù),對(duì)每行數(shù)據(jù)進(jìn)行解析.以“出站時(shí)間+進(jìn)站點(diǎn)+出站點(diǎn)”作為key,旅行時(shí)間作為value.
Shuffle 階段:key 值相同的value 會(huì)存入一組,傳送到Reduce.
Reduce 階段:針對(duì)每個(gè)key,統(tǒng)計(jì)value 的個(gè)數(shù)count,count 作為新輸出value.
Output 階段:以key-value 的方式輸出計(jì)算結(jié)果,最終的key 為“出站時(shí)間+進(jìn)站點(diǎn)+出站點(diǎn)”,value 為“車流量數(shù)”.
該計(jì)算方法的流程如圖6所示,偽代碼如算法2所示.
圖6 旅行時(shí)間OD 矩陣實(shí)現(xiàn)流程偽代碼
算法2.車流量OD 矩陣計(jì)算方法輸入:高速流量數(shù)據(jù)輸出:車流量OD 統(tǒng)計(jì)信息1.function MAP(key,value,context)2.items=value.split(",");3.timeIn=items[4];4.timeOut=items[7];5.key=items[7].split(",")[0] + items[3]+ items[6];6.odTime=timeOut – timeIn;7.context.write(key,odTime);8.end function 9.function REDUCE(key,Iterable
本文中生成OD 矩陣所需的高速公路的收費(fèi)數(shù)據(jù)數(shù)據(jù)量龐大,但是對(duì)實(shí)時(shí)性要求不高,所以選用在Hadoop 集群環(huán)境下使用MapReduce 分布式離線計(jì)算框架進(jìn)行實(shí)驗(yàn).集群包含3 個(gè)節(jié)點(diǎn),其中1 個(gè)主節(jié)點(diǎn),2 個(gè)從節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的CPU 都為4 核,運(yùn)行內(nèi)存16 GB,主機(jī)硬盤2 TB.
實(shí)驗(yàn)數(shù)據(jù)為河南省高速2018年的真實(shí)收費(fèi)數(shù)據(jù).該數(shù)據(jù)記錄了300 余個(gè)高速公路出入口,全年的車輛出入情況,共計(jì)10 743 萬余條記錄.每條數(shù)據(jù)的記錄形式如表3所示,包含車牌號(hào)、駛?cè)胝军c(diǎn)、駛出站點(diǎn)、駛?cè)霑r(shí)間、駛出時(shí)間等12 個(gè)屬性.
為了方便進(jìn)行實(shí)驗(yàn)和性能評(píng)估,需要對(duì)數(shù)據(jù)進(jìn)行過濾和清洗.數(shù)據(jù)中最核心的屬性就是車牌號(hào),所以按照標(biāo)準(zhǔn)的車輛牌照字符要求:正規(guī)的車輛牌照應(yīng)該為7 位有效字符,第一位為省份漢字簡稱,第二位為大寫英文字母形式的省內(nèi)區(qū)域代號(hào),后五位應(yīng)該是大寫英文字母和數(shù)字的組合.根據(jù)上述要求,可能出現(xiàn)的不規(guī)范數(shù)據(jù)問題有如下幾項(xiàng):
(1)車輛牌照第一個(gè)字符不是省份漢字簡稱.
(2)省份漢字簡稱多余1 個(gè).
(3)車輛牌照中出現(xiàn)非法字符,如:小寫字母,特殊符號(hào)等.
(4)車輛牌照位數(shù)不足.
(5)無牌照信息.
包含上述任何一條的數(shù)據(jù)將被認(rèn)為是不符合要求的數(shù)據(jù),將這些數(shù)據(jù)過濾掉.本文中提到的實(shí)驗(yàn)只需要各種類車輛在時(shí)間和空間上的信息,所以將過濾后的數(shù)據(jù)進(jìn)行進(jìn)一步的壓縮,只保留車牌號(hào)、駛?cè)胝军c(diǎn)、駛出站點(diǎn)、駛?cè)霑r(shí)間、駛出時(shí)間和車輛類型這六個(gè)屬性,其他屬性對(duì)于本次實(shí)驗(yàn)來說并非必要數(shù)據(jù),所以將其余屬性去除以保證在程序運(yùn)行和計(jì)算過程沒有額外的不必要消耗,保證程序運(yùn)行性能.
表3 數(shù)據(jù)屬性
實(shí)驗(yàn)對(duì)生成旅行時(shí)間OD 矩陣和車流量OD 矩陣所用時(shí)間進(jìn)行了評(píng)價(jià).在相同的硬件條件下,控制輸入時(shí)數(shù)據(jù)的規(guī)模,統(tǒng)計(jì)計(jì)算所用時(shí)間.
5.3.1 旅行時(shí)間OD 矩陣
實(shí)驗(yàn)測(cè)試不同的統(tǒng)計(jì)天數(shù)統(tǒng)計(jì)車輛平均旅行時(shí)間的OD 矩陣計(jì)算效率如表4所示,實(shí)驗(yàn)證明,數(shù)據(jù)量越大的情況下,計(jì)算效率越高.
5.3.2 車流量OD 矩陣
實(shí)驗(yàn)測(cè)試不同的統(tǒng)計(jì)天數(shù)統(tǒng)計(jì)車流量的OD 矩陣計(jì)算效率如表5所示,實(shí)驗(yàn)證明,當(dāng)數(shù)據(jù)量增大時(shí),計(jì)算效率增高.
表4 不同數(shù)據(jù)量的旅行時(shí)間OD 矩陣的計(jì)算效率
表5 不同數(shù)據(jù)量的車流量OD 矩陣的計(jì)算效率
對(duì)于存儲(chǔ)模型的設(shè)計(jì),主要考慮設(shè)計(jì)的模型占用的物理存儲(chǔ)空間大小.傳統(tǒng)的存儲(chǔ)方式主要是基于MySQL 的關(guān)系型數(shù)據(jù)存儲(chǔ)模式,這種存儲(chǔ)方式不適合存儲(chǔ)海量的數(shù)據(jù),需要多個(gè)表進(jìn)行存儲(chǔ)才便于對(duì)數(shù)據(jù)的處理,而本文采用基于HBase 的列式存儲(chǔ)模式,數(shù)據(jù)量相對(duì)較小時(shí),兩種存儲(chǔ)方式差別并不大,而數(shù)據(jù)量較大時(shí),本文設(shè)計(jì)的存儲(chǔ)方式節(jié)省物理存儲(chǔ)空間.如表6所示,當(dāng)存儲(chǔ)時(shí)間長度為7 天的數(shù)據(jù)時(shí),本文設(shè)計(jì)的存儲(chǔ)方式只比傳統(tǒng)存儲(chǔ)方法節(jié)省3% 的物理存儲(chǔ)空間,當(dāng)存儲(chǔ)時(shí)間長度為一年的數(shù)據(jù)時(shí),本文設(shè)計(jì)的存儲(chǔ)方式比傳統(tǒng)存儲(chǔ)方式節(jié)省近10%的物理存儲(chǔ)空間.
表6 不同數(shù)據(jù)量的存儲(chǔ)模型占用空間(單位:MB)
兩種存儲(chǔ)方式的對(duì)比情況如圖7所示.
圖7 車流量OD 矩陣實(shí)現(xiàn)流程
高速公路經(jīng)過長時(shí)間的發(fā)展,已經(jīng)形成了比較健全的路網(wǎng)結(jié)構(gòu),信息化的建設(shè)已經(jīng)逐步成型,并覆蓋到高速公路的許多業(yè)務(wù)領(lǐng)域,現(xiàn)有的高速公路運(yùn)營系統(tǒng)對(duì)于海量數(shù)據(jù)的處理效率低下,本文從大數(shù)據(jù)分析的角度實(shí)現(xiàn)了生成車輛OD 矩陣的過程,將生成的矩陣存入HBase 中,并對(duì)存儲(chǔ)的效率和存儲(chǔ)空間進(jìn)行了分析,以便于后續(xù)對(duì)生成的OD 矩陣進(jìn)行聚類等分析.