Hadoop支持下海量出租车轨迹数据预处理技术研究
吕江波;张永忠
【摘 要】海量出租车轨迹数据预处理是轨迹数据挖掘和应用的前提。出租车轨迹数据是典型的大数据,传统的数据处理技术无法解决大规模出租车轨迹数据误差分析和处理问题,文章在分析轨迹数据误差来源和误差类型的基础上,提出基于Hadoop的海量出租车轨迹数据预处理模型,使用Hive实现轨迹数据误差统计分析,设计MapReduce并行处理程序实现轨迹数据预处理。实验结果表明,该模型可以有效解决大规模出租车轨迹数据预处理问题,处理方式可靠性较高,大大提高了轨迹数据预处理效率,为后期轨迹数据深入挖掘和分析奠定了基础。%Massive taxi trajectory data preprocessing is the precondition of trajectory data mining and the application. Taxi trajectory data is a typical big data,the traditional data processing technology can not solve the problem of large scale taxi track data error analysis and preprocessing,on the basis of analyzing the trajectory data error source and error type, study of mass trajectory error statistical analysis method and data processing method,the taxi trajectory data preprocessing model based on Hadoop is put forward,using the hive for the rehadoop分布式集搭建
alization of the trajectory error statistics,design MapReduce parallel processing procedures for the realization of trajectory data preprocessing. Experimental results show that,the model can effectively solve the problem of large scale taxi trajectory data preprocessing,high reliability,greatly improve the effi-ciency of the trajectory data preprocessing,late for trajectory data digging and analysis laid a foundation.
【期刊名称】《城市勘测》
【年(卷),期】2016(000)003
【总页数】4页(P46-49)
【关键词】轨迹数据;Hadoop;大数据;数据预处理;并行计算
【作 者】吕江波;张永忠
【作者单位】兰州交通大学,甘肃 兰州 730070; 兰州市勘察测绘研究院,甘肃 兰州 730030;兰州交通大学,甘肃 兰州 730070; 兰州市勘察测绘研究院,甘肃 兰州 730030
【正文语种】中 文
【中图分类】P208.1
随着卫星定位技术、无线通信技术和地理信息技术的迅速发展,定位设备在车载以及移动终端上得到广泛使用。许多城市的出租车都装载了定位设备,这些设备会定时将其位置信息传至服务中心,由此汇聚而成大规模的出租车轨迹数据。这些轨迹数据包含大量信息,已经开始应用于很多重要领域,如城市规划、智能交通、人类行为模式研究以及能源消耗等。近年来,由郑宇主导的“城市计算”,掀起了对GPS轨迹数据处理和分析的热潮。他们通过出租车在某区域的连通性评判区域规划的好坏;利用出租车轨迹数据感知交通流量,为用户提供最快驾车路线和最佳拼车方案;利用出租车轨迹数据为出租车司机提供最短时间拉到乘客的方案以及为乘客推荐最可能打到车的地点[1]。童晓君利用出租车轨迹数据分析居民出行热点区域和出行行为[2]。张富峥利用出租车在加油站等待时间估计加油站的排队长度,从而估计出此时加油站内车辆数量以及加油量。将全城加油站数据汇总,便可以计算出任意时刻有多少燃油被消耗掉[3]。与此同时,轨迹数据应用也面临着诸多挑战,首先,GPS定位误差和人为因素导致轨迹数据存在许多不合理数据,这些数据严重影响数据分析结果,因此,数据预处
理成为轨迹数据应用首先要解决的问题;其次,轨迹数据是典型的大数据,以一个城市为单元,一天的出租车轨迹数据量大小从几GB到几十GB不等,多日的数据更可达TB、PB量级,常规的数据处理方式要处理如此大规模的数据几乎是不可能的,即使勉强可以处理,也需要花费很高的时间成本。大数据时代的到来,为海量轨迹数据处理提供了解决方案,Hadoop作为目前主流的开源大数据分析平台之一,为海量数据分布式并行处理提供强大的平台支撑。Hadoop可以运行在廉价硬件构建的计算机集上,能够对大量数据进行可靠的、高效的、可扩展的分布式处理。
针对上述出租车轨迹应用中存在的数据误差和数据量大难处理两大问题,本文以Hadoop平台为基础,通过分析轨迹数据误差来源,总结误差类型,研究误差统计分析方法和处理方法,在此基础上提出基于Hadoop的轨迹数据预处理模型,实验证明该模型可以有效分析和处理海量轨迹数据误差,解决轨迹数据量大的处理瓶颈,处理方式更加可靠、高效。
由于GPS定位本身存在误差,加之出租车在实时动态获取数据,道路交通状态复杂性等原因,在海量的出租车轨迹数据中存在许多不合理数据,虽然大数据分析中有少许错误数据不会对分析结果产生影响,但也要具体问题具体分析,少许的错误数据也会使结果相差很多。
例如:在计算出租车行驶距离时,因为位置偏离使用错误的GPS定位坐标计算的距离肯定相差很多,严重影响计算结果。我们将这些导致不合理数据的原因大致分为两类:一类是与GPS设备有关的误差,一类是与人为因素有关的误差。
(1)与GPS设备有关的误差。主要有多路径效应误差、GPS信号遮挡误差和GPS设备故障。多路径效应误差产生的原因是当出租车行驶到有高大建筑物或水面附近时,建筑物和水面对于电磁波具有强反射作用,产生的反射波进入接收天线时与直接来自卫星的信号产生干涉,从而使观测值偏离真值产生的误差。GPS设备因建筑遮挡或外界有较强的电磁干扰等因素导致接收装置无法获取卫星信号,随机产生与真值相差较大的位置数据,产生“偏离现象”,这种现象在隧道行驶时特别严重。GPS设备出现故障后未及时排除,设备采集的位置、时间和出租车状态等信息都会出现错误[4]。
(2)与人为因素有关的误差,由于司机关闭车载设备,导致GPS数据间断传输,这样数据就会不连续,在关闭车载设备的时间段GPS数据空白,在连续计算行驶距离或时间时出现错误。司机未规范使用计价器,导致数据中出租车行驶状态与实际不符,分析轨迹数据发现个别出租车全天的车辆行驶状态都是空车或载客,这明显与实际不符。
通过对轨迹样本数据分析,对计算结果产生较大影响的误差类型有以下几类:
(1)经纬度出界。用经纬度描述轨迹点的位置,由于GPS设备误差导致轨迹点严重偏离超出研究区域范围的数据均为不合理数据[2]。
(2)采集时间错误。主要有时间格式错误和时间无效。
(3)车辆状态错误。车辆状态0表示空驶,1表示载客。如果出租车全天空驶、全天载客或车辆状态存在非0或非1的值,则这些都是不合理数据[2]。
(4)数据丢失。出租车轨迹是由许多在时间上相对连续的轨迹点构成,超出 15 min不连续的轨迹点数据应该作为两条轨迹的分割点。
(5)其他轨迹数据错误,主要有瞬时速度和行驶方向数值异常等。
Hadoop是一个分布式计算框架,它能在大量廉价的硬件设备组成的集上运行海量数据并进行分布式计算。他处理的海量数据能达到PB级别,并且可以让应用程序在上千个节点中进行分布式处理。Hadoop优点主要有:Hadoop是低成本的,Hadoop是开源软件,这样就可
以降低成本,此外,不必购买服务器级别的硬件,便可以搭建一个强大的Hadoop集;Hadoop是可靠的,它假设计算过程和存储会失败,因此它维护多个工作数据副本,对失败的节点重新处理;Hadoop是高效的,通过并行处理加快处理速度;Hadoop还是可伸缩的,如果数据量增大或要求提高数据处理效率,Hadoop集可以通过提升硬件性能或增加节点数量实现扩展。Hadoop主要由分布式存储HDFS和分布式计算MapReduce两部分构成。HDFS是一个类似于Google GFS的开源分布式文件系统,它提供一个可扩展、高可靠、高可用的大规模数据分布式存储管理系统,基于物理上分布在各个数据存储节点的本地Linux系统的文件系统,为上层应用程序提供一个逻辑上成为整体的大规模数据存储文件系统。MapReduce并行计算框架是一个并行化程序执行系统。它提供了一个包含Map和Reduce两个阶段的并行化处理模型和过程,提供一个并行化编程模型和接口,让程序员可以方便快速地编写大数据并行处理程序。此外,随着Apache Hadoop系统开源化发展,Hadoop平台已经演进为一个包含许多相关子系统的完整的大数据处理系统,这些子系统有:HBase、Hive、Pig、Zookeeper、Avro等[5~7]。
轨迹数据误差不可避免,而且在海量轨迹数据中误差数据的总量不容小觑,严重影响计算结果。为了剔除海量轨迹数据中不合理数据,提高处理效率,保证分析结果的正确性,本文提
出了基于Hadoop的出租车轨迹数据预处理模型,具体模型如图1所示:
首先对原始数据进行抽样分析,出数据存在的问题,结合误差来源,进行误差分类,误差分类的结果是误差统计分析和误差处理的直接依据。为了处理海量轨迹数据,该模型运行在Hadoop集上,其中HDFS负责数据分布式存储,MapReduce负责数据并行处理。轨迹数据源文件通常是由许多小于64 M的小文件组成,为了避免大量小文件引起的Hadoop运行效率低问题,编写小文件合并程序,合并后的轨迹文件直接存储在HDFS上。然后,在Hadoop集上部署Hive组件,Hive组件管理Hadoop中存储的数据,并提供类似SQL的查询语言,快速实现数据抽取、转换和加载,实质是将用户定制的类似SQL查询语言转换为MapReduce程序[6]。根据误差分类结果,使用Hive工具对轨迹数据误差进行统计分析。最后,针对各类误差类型编写MapReduce数据预处理程序,完成数据清洗。MapReduce程序主要有Map函数和Reduce函数组成,Map负责把任务分解成多个任务,Reduce负责把分解后多任务处理的结果汇总起来,一些简单的数据预处理可以交给Map,例如:数值超界、数值异常、格式校验等。复杂一些的数据预处理需要Map和Reduce相互配合。
为了验证本文所提出的基于Hadoop的出租车轨迹数据预处理模型的可行性,以深圳市出租车轨迹数据预处理为应用案例进行测试。
本文采用深圳市13 799辆出租车2011年4月18日~2011年4月26日共9天的轨迹数据。轨迹数据文件均以车牌号命名,数据文件采用csv格式存储,共 13 799个文件,约2亿条记录,数据量大小约为 11 G。数据文件记录了车牌号、采集时间、经度、纬度、行驶速度、行驶方向和车辆状态。表1为轨迹数据文件结构,表2为轨迹样例数据。