揭秘京东城市时空数据引擎—JUST如何助力交通流量预测

    2014年跨年夜上海外滩灾难性踩踏事件,使得公共安全问题受到了全体社会的广泛关注。解决这一问题的很重要一项工作就是:如何实时监控快速预测城市中每个地方的人流量。当某个地方的人流量超过给定的值或者有超过给定值的趋势时,相关部门能及时地采取相关措施,例如:疏散人群,交通引流等,这样才能防止悲剧的再次发生。为避免类似2014年跨年夜上海外滩灾难性踩踏事件,某市公安局提出需要搭建城市实时人流监控预测系统,为解决因人流问题造成的交通、社会治安等问题提供决策意见。

 

图1 上海外滩的踩踏事件

    京东智能城市作为系统建设中标单位,对整个系统的需求进行了初步分析,发现一个区域的人流量与多种数据相关,如图2所示。比如:(1)手机基站数据。当一个地方的手机信令数据越多时,说明周围的人也越多;(2)视频监控数据。从视频的画面中,能够识别出大约有多少人;(3)交通流量数据。某条路的交通流量直观的反映了某个区域的流入流出人数。(4)出行轨迹数据。轨迹数据能够反映出人的流向;(5)天气数据。人的出行受天气的影响,比如下雨天,人们都很少出门,因此天气数据也有助于人流量的预测;(6)不同的地点所能承载的最大人流量是不同的。比如大型火车站,2万的人其实不会造成公共安全威胁,但是如果一个小区突然有2万人,那就需要注意了。因此,每个区域的建筑类型(我们称之为兴趣点或POI)、建筑密度、道路结构等都可以帮助人流的预警。(7)最后,如果事先了解到诸如举行演唱会等事件信息,也有助于人流量的预测。

 

图2业务数据

    上面说的这些数据,单从一项数据是无法实时监测和有效预测某个区域的人流量的,因为一项数据仅仅反映某一方面的信息。必须综合利用尽可能多的数据,才能有效地实现人流量的监控与预警,确保公共安全。

    经过认真严谨的分析论证之后,京东城市AI部门很快就确定整体解决方案。大体思路是:(1)利用上述的多种数据计算出某个时间段每个区域的流入、流出的人流量;(2)采用AI算法模型对城市中每个区域的人流量进行建模;(3)利用建立好的模型,根据最近一段时间各区域的人流量,快速预测未来一段时间内每个区域的人流量,并给出潜在的预警。

 

图3 人流监控与预测的基本步骤

    整体解决思路确定之后,AI部门算法小伙伴就开始紧锣密鼓地研究数据、敲定建模方法。然而摆在AI部门算法小伙伴面前的问题就是:(1)这么多种类的数据需要如何有效管理?(2)如何从各种类型数据中快速地提取特征指标,例如人流量?(3)如何方便快速地构建模型,并对模型进行有效性验证? 如果上面三个问题都解决不了那人流监控预误测根本无法保证实时性。实时性在我们这个场景中非常重要,只有快速监控和预测人流量,才能有效地施行交通管制、人流疏散,防止类似于踩踏事件的公共安全事故发生。

    AI部门算法工程师小艾同学之前有MySQL等关系型数据库的经验,主动承担起了业务数据管理、维护工作;刚开始创建业务库,小艾同学就崩溃了:同类型的不同来源业务数据,数据格式可能不一样,没法统一建表。只能为每一份数据单独设计一张表,而且当入库数据量达到1T的时候,MySQL数据库直接崩溃。最后好不容易把数据导入到MySQL数据库,然而由于缺乏更深入的MySQL数据库调优经验,一个简单的数据查询过程,耗时费力。

小艾同学突然觉得自己太难了,这些业务数据利用MySQL已经不知道该怎么管理了。就在小艾同学一筹莫展的时候,数据管理平台部的小D同学刚好找小艾同学咨询AI算法模型问题。小D同学看着一脸生无可恋的小艾同学,询问发了什么事情。小艾同学给小D同学复述了一下目前在制定实时人流预测算法模型上的各种疑难杂症。

    小D同学听完小艾同学诉苦之后,对小艾同学语重心长地说了句:“小艾同学,这你就不对了,你说的这些问题对于我们新上线的京东城市时空数据引擎(JUST引擎)来说都是小菜一碟,不是事儿。”

    “首先,刚才你描述的这些业务数据,其实都是明显带有时间、空间位置属性的数据。我们JUST引擎把这类数据统称为时空数据,并且JUST引擎强大的数据建模能力,已经将以上这么多类型数据归类成6大类时空数据模型,所有的时空数据我们都可以按照6大类数据模型进行入库管理。这6种数据类型的分类方式为:一方面,世间万事万物都可以由实体对象以及实体对象之间的关系组成。若实体对象之间不存在关联,我们称之为点数据;若实体之间存在关联,我们称之为网数据。另一方面,根据数据的时间和空间的动态特性,我们可以将数据分成4类:时空静态数据、空间静态时间动态数据、空间动态时间静态数据、时空动态数据。但是由于同一物体在同一时刻智能出现在一个地方,空间动态时间静态数据不会存在。因此,根据时空动态特性,我们将时空数据最终分成了3类,即:时空静态数据、空间静态时间动态数据和时空动态数据。综上,根据城市数据的时空特性以及实体间的关联性,我们可以将城市数据划分成(4-1)×2 = 6类,如图4所示。(1)时空静态点数据:以空间点的形式存在,空间位置和读数都不随时间变化。你用到的数据中,兴趣点就是这类数据,例如,火车站一旦建好,它的位置、大小、分类等信息将不再随时间变化。(2)空间静态时间动态点数据:以空间点的形式存在,其位置信息不随时间变化,但会连续不断地产生读数。你用到的数据中,监控视频数据、天气数据就是这类数据。(3)时空动态点数据,以空间点的形式存在,但位置和读数均随时间变化。你用到的数据中,事件数据就是典型的时空动态点数据。生活中的打车数据、订单数据也是这类数据。(4)时空静态网数据,以网络的形式存在,位置和读数均不变化。你用到的数据中,路网数据就属于此类。(5)空间静态时间动态网数据,是指空间网络上产生的一系列读数。例如交通流量,每条路上每隔一段时间都会产生一条读数。(6)时空动态网数据,以网的形式存在,且空间位置和读数不断变化。你说的轨迹数据就是一种特殊的时空动态网数据。”

 

图4六大类时空数据模型

    “回到人流预测场景,计算某个区域的绝对流出人数,就是计算出某个时刻的总人数相对于上一时刻的总人数的差值。这是典型的时空范围查询的问题。传统的关系型数据库,例如MySQL、Oracle以及PostGIS,虽然整合了时空数据管理的模块,能够满足小数据量的时空范围查询。但是一旦数据量很大,正如你遇到的问题一样,系统就会崩溃。”

    “针对海量数据,目前采用的主流方法是分布式非关系型数据库,例如HBase。然而,原生的HBase是一个键值(key-value)数据库,只能根据一维的键值快速找到记录,没有有效的时空索引(时空数据可以看成是3维的:经度、纬度、时间),无法高效实现时空范围查询等查询分析。此外,HBase本身没有对时空数据进行优化存储,因此占用的磁盘空间非常大。以轨迹数据为例,传统的存储方式如图5所示,每个GPS点占用一行数据,造成数据条目数与GPS点的数目相同,导致存储空间开销很大。”

 

图5 传统HBase轨迹数据存储方式

    “JUST引擎为HBase创建了多种高效时空索引,将多维的时空信息编码到一维的键当中,能够快速定位诸如时空范围查询等查询的数据。当前JUST支持的时空索引如图6所示,分别对应不同的数据查询场景。这就好比你在图书馆的书架上找书的过程 。没有创建时空索引的HBase,需要你在书架上一本一本地查找你要的书。而拥有时空索引的JUST会告诉你,你所需要的书在哪个书架、第几层、第几本中,大大减少你的查找时间。”

 

图6 JUST时空索引策略

    “除此之外,JUST还对6种时空数据类型的每种数据类型设计了最佳的索引存储方式以及数据分析方法。还是以轨迹数据为例,我们预置了多种开箱即用的轨迹处理方法,包括轨迹异常值过滤、轨迹分段、轨迹地图匹配、轨迹插值等;对于每条分段后的轨迹,我们将这条轨迹的GPS点存储在同一条数据记录中,并采用GZip压缩方式,这样能够大大减少数据的条目数和占用空间,如图7所示。通过我们的实验,采用JUST的轨迹存储方法与原来传统的非关系型数据库的存储方法相比,磁盘空间缩小至1/8。更小的存储空间不仅节约磁盘空间,在有限的网络带宽下还加速了查询效率。好比一扇不大的门,对于胖子们来说,一次只能一个人穿过,而对于瘦子来说,可以允许两个人同时经过。我们还提出了更为精确描述轨迹形状的方法。如图8所示。传统的描述轨迹形状的方法是使用一个矩形框,该矩形框很大空间都与轨迹位置无关。因此我们提出了采用多个小格子来描述轨迹形状的方法。更精确的轨迹形状描述允许我们设计出了更好的过滤方法,更进一步的提高了查询效率。”

 

图7 JUST中轨迹数据存储方式

 

图8 精确描述轨迹形状

    “正是我们先进的索引方法和存储方法,JUST的计算效率有了巨大的提升。其中,存储和索引效率相较于原生HBase提升超过7倍,查询效率相对于其他时空查询框架有了上100倍的提升,如图9所示。我们的相关研究工作申请了多项国家专利,相关论文也已被国际顶尖会议ICDE 2020接收 ,受到了国际同行的认可。”

   

图9性能对比

    小艾惊叹到:“这么厉害!”随后又发愁道:“可是我目前对JUST的使用非常不熟悉。由于我们项目工期非常紧,如果我要学习JUST的使用,并且将它应用到我们人流监控和预测项目中,我担心时间来不及了……”

    小D安慰道:“别担心,JUST提供了JUST SQL模块,以上所有的操作都可以通过SQL语句简单到实现。只要你熟悉任何一种关系型数据库,熟悉SQL语句,那几乎能够零学习成本地玩转JUST。此外,我们还为AI算法工程师量身定做了一套Notebook,所有的数据处理和模型训练,都可以在JUST Notebook上一站式进行。我们还预置了丰富的开箱即用的数据预处理、数据分析、特征提取方法,你可以随意进行组合。这正是JUST不断追求的系统的易用性。”

    小艾听了喜笑颜开,毅然决定使用JUST进行底层数据管理。借助于JUST,京东城市圆满地完成了城市实时人流监控预测系统项目。后来,小艾利用JUST还完成了多个项目的交付,包括:利用配送轨迹修复电子地图项目、基于位置的商品排行、联通营业厅选址项目等,如图10所示。

 

图10 更多的项目使用了JUST

    目前,JUST已经推出了公测版本,准备以PaaS的形式对外提供服务,让更多的人能够享受到JUST的高扩展性、高效率以及强易用性。关于JUST的产品主页和产品门户分别如图11和图12所示。

 

图11 JUST产品主页(网址:http://just.urban-computing.cn/

 

 图12 JUST产品门户(网址:http://portal-just.urban-computing.cn/

    中国的其他计算机厂商也逐渐开始研究时空数据管理平台。它们与JUST平台的对比如图13所示。传统GIS厂商的时空大数据管理平台可以理解为一个数据集市,提供各类空间数据的可视化服务,查询能力仅局限于空间查询,并不是真正意义上的时空数据管理平台,可以理解为大数据量空间数据管理平台。相较阿里的HBase Ganos以及华为CloudTable,JUST提供了丰富的时空数据模型,能够全面覆盖所有时空数据;同时设计了高效的索引存储管理方法,为每一种数据类型封装了丰富的开箱即用的处理分析函数;此外,JUST还提供了完整的SQL引擎,所有的操作都可以简单的使用SQL语句实现;为AI算法工程师准备了完备的Notebook,方便一站式地模型构建。总之,相较于其他的平台,JUST帮助用户能够更方便、更快捷地管理更大规模的时空数据

 

图13 JUST与其他厂商对比

 

相关论文:Ruiyuan Li, Huajun He, Rubin Wang, Sijie Ruan, Yuan Sui, Jie Bao, Yu Zheng. TrajMesa: A Distributed NoSQL Storage Engine for Big Trajectory Data. Accepted. (ICDE 2020)

展开阅读全文

Git 实用技巧

11-24
这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。
©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值