计算机系统应用  2020, Vol. 29 Issue (5): 159-166 PDF

1. 北方工业大学 数据工程研究院, 北京 100144;
2. 大规模流数据集成与分析技术北京市重点实验室, 北京 100144

Highway OD Data Storage Model and Calculation Method Based on Hadoop
HE Jia-Hui, ZHAO Zhuo-Feng, ZHANG Kuan, ZHANG Zhi
1. Institute of Data Engineering, North China University of Technology, Beijing 100144, China;
2. Beijing Key Laboratory on Integration and Analysis of Large-Scale Stream Data, Beijing 100144, China
Abstract: Highway OD data is a kind of important data for highway operation management and condition analysis. How to use massive toll data to quickly generate and effectively manage highway OD data is an important problem in the current highway intelligent construction. Aiming at the problems of various types and long periods of highway OD data, a storage model of highway OD matrix based on Hadoop and corresponding calculation method are proposed. Two kinds of OD matrices are established as storage models, i.e. statistics of highway vehicle travel time and statistics of highway traffic flow. The comparison between the experiment based on massive real highway toll data and the traditional storage of highway toll data shows that the storage method proposed has better storage efficiency and saves storage space compared with the traditional relational data storage.
Key words: OD matrix     storage model     MapReduce

1 引言

2 高速公路OD矩阵定义 2.1 定义

2.2 OD矩阵生成规则

(1)统计量(statistics): 该OD矩阵对应的表统计的指标, 即高速公路所有车型的平均旅行时间和车流量.

(2)时间区间(period): 用于表明统计对象的时间属性, 一个时间区间由一个开始时间点(startInstant)和一个结束时间点(endInstant)构成.

(3)进站点(stationIN): 车辆驶入高速的站点位置编号.

(4)出站点(stationOUT): 车辆驶出高速的站点位置编号.

(5)值(value): 度量统计量的值, 例如2493秒(旅行时间OD矩阵)或479辆(车流量OD矩阵).

2.2.1 统计高速公路车辆旅行时间OD矩阵

 图 1 旅行时间OD矩阵逻辑模型

 图 2 统计车辆旅行时间OD矩阵的计算流程

2.2.2 统计高速公路车流量OD矩阵

 图 3 车流量OD矩阵逻辑模型

 图 4 统计车流量OD矩阵的计算流程

3 基于HBase的OD数据存储模型

HBase表主要由以下几部分构成:

4 OD矩阵计算在大数据环境下的实现 4.1 旅行时间OD矩阵计算方法在MapReduce下的实现

MapReduce计算框架由Input, Map, Shuffle, Reduce, Output 5个部分组成.

Input阶段: 读入数据并设置统计时间段.

Map阶段: 读取所有输入数据, 对每行数据进行解析. 以“出站时间+进站点+出站点”作为key, 计算旅行时间作为value.

Shuffle阶段: key值相同的value会存入一组, 传送到Reduce.

Reduce阶段: 针对每个key, 统计value的个数count, 并计算value和sum, 计算value均值sum/count作为新输出value.

Output阶段: 以key-value的方式输出计算结果, 最终的key为“出站时间+进站点+出站点”, value为“平均旅行时间”.

 图 5 旅行时间OD矩阵实现流程

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<ODTime>, context)

10.　count = 0;

11.　totaltime = 0;

12.　avg = 0;

13.　for ODTime TIME: L do

14.　　totaltime = totaltime + TIME.getTOTALTIME();

15.　　count + +;

16.　end for

17.　avg = totaltime/count;

18.　context.write(key, avg)；

19. end function

4.2 车流量OD矩阵计算方法在MapReduce下的实现

Input阶段: 读入数据并设置统计时间段.

Map阶段: 读取所有输入数据, 对每行数据进行解析. 以“出站时间+进站点+出站点”作为key, 旅行时间作为value.

Shuffle阶段: key值相同的value会存入一组, 传送到Reduce.

Reduce阶段: 针对每个key, 统计value的个数count, count作为新输出value.

Output阶段: 以key-value的方式输出计算结果, 最终的key为“出站时间+进站点+出站点”, value为“车流量数”.

 图 6 旅行时间OD矩阵实现流程伪代码

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<ODTime>, context)

10.　count = 0;

11.　totaltime = 0;

12.　for ODTimoTIME : L do

13.　　totaltime = totaltime + TIME .getTOTALTIME();

14.　　count + +;

15.　end for

16.　context.write(key, count);

17. end function

5 实验评价 5.1 实验环境

5.2 实验数据

(1) 车辆牌照第一个字符不是省份汉字简称.

(2) 省份汉字简称多余1个.

(3) 车辆牌照中出现非法字符, 如: 小写字母, 特殊符号等.

(4) 车辆牌照位数不足.

(5) 无牌照信息.

5.3 计算模型评价

5.3.1 旅行时间OD矩阵

5.3.2 车流量OD矩阵

5.4 存储模型评价

 图 7 车流量OD矩阵实现流程

6 总结

 [1] 赵明, 王寒凝. 基于车牌照识别技术的OD调查系统分析与设计. 公路交通科技: 应用技术版, 2008(12): 188-190. [2] 宋广辉, 刘淑珍, 耿英杰, 等. OD调查简介. 东北公路, 1996(2): 77-82. [3] 陈满堂. 关于车牌号OD调查方法的探讨. 公路, 2004(9): 86-88. DOI:10.3969/j.issn.0451-0712.2004.09.020 [4] 林勇, 蔡远利, 黄永宣. 高速公路动态OD矩阵估计. 长安大学学报(自然科学版), 2003, 23(6): 83-86. [5] 多雪松, 张晶, 高强. 基于Hadoop的海量数据管理系统. 微计算机信息, 2010, 26(5-1): 202-204. [6] 龙伟, 陈志, 万亚平. 基于Hadoop的高速公路联网收费稽查系统. 西部交通科技, 2014(8): 73-78. [7] Newman A, Li YF, Hunter J. Scalable semantics—The silver lining of cloud computing. Proceedings of the 2008 IEEE 4th International Conference on eScience. Indianapolis, IN, USA. 2008. 111–118. [8] 王惟一. 基于存储模型的HBase查询优化技术研究[硕士学位论文]. 南京: 南京大学, 2018 [9] 徐德智, 刘扬, Ahmed S. 基于Hadoop的RDF数据存储及查询优化. 计算机应用研究, 2017, 34(2): 477-480, 486. DOI:10.3969/j.issn.1001-3695.2017.02.035