System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及大数据,更具体地说,它涉及基于开源大数据组件的车辆行驶里程批量处理方法及系统。
技术介绍
1、在金融行业的经营性汽车贷款的贷后管理等场景中,往往需要采集车辆的gps定位数据(或其他卫星定位数据),并基于这些gps数据对车辆的位置、轨迹、里程等信息进行定期的监测,以便及时发现可能存在的车贷风险和异常情况。其中,对车辆的行驶里程数进行定期统计和监测是非常重要的一种风控手段。但由于金融机构的车贷业务的车辆数量往往非常庞大(可达到百万级),而且出于精确监测的需要,gps数据通常是每隔数秒钟就要采集一次(按每隔10秒钟采集一次计算,一辆车每天的gps数据可达8640条),这导致要定期统计(比如每天统计一次)所有车辆一天的行驶里程所涉及的明细数据量非常大(可达到百亿级),计算非常耗时间耗资源。
2、现有技术中关于车辆行驶里程计算相关的技术,几乎都是聚焦在如何提升单车行驶里程计算的精确度,而不是解决如何在海量数据的场景下高效快速地批量计算车辆的行驶里程。比较容易想到的一种方法是,将这些车辆的每一条定位数据存储在mysql、postgresql等常见的关系型数据库中,用java、python等常用的编程语言写一个单机程序,每次从数据库中读取某一辆车某一天的所有定位数据并按照时间先后排序,计算出相邻两个时间点的距离并累加,得出这一辆车这一天的行驶里程。然后依次计算下一辆车的行驶里程,直到遍历并计算出所有车辆的行驶里程。但这种方法的效率很低,对于百万级数量的车辆通常需要数天才能得出计算结果,难以满足风控的要求。
技术实现思路
1、为解决现有技术中的不足,本专利技术的目的是提供基于开源大数据组件的车辆行驶里程批量处理方法及系统,采用了hive的行转列和自定义udf功能,可以利用分布式集群在较短时间内计算出海量车辆的行驶里程,百万级的车辆前一天的行驶里程可以在分钟级时间内得到计算结果。
2、本专利技术的上述技术目的是通过以下技术方案得以实现的:
3、第一方面,提供了基于开源大数据组件的车辆行驶里程批量处理方法,包括以下步骤:
4、将数据库中前一时间周期内所有车辆的gps定位数据批量同步到hive中,得到gps表;
5、使用hive中内置的多行转一列的函数,将gps表中每辆车在前一时间周期的全部gps定位数据压缩成一行的gps_list字段,并写入到第一临时表;
6、使用java语言开发基于临时表中的gps_list字段计算单个车辆行驶里程的udf函数,将udf函数编译成jar包并部署到hive中;
7、利用udf函数,通过hive sql批量计算第一临时表中所有车辆在前一时间周期的车辆行驶里程,并将计算结果存储到第二临时表。
8、进一步的,所述gps表中的字段包括车辆id、当前车辆位置的经度、当前车辆位置的纬度和当前时间戳。
9、进一步的,所述多行转一列的函数为collect_set函数或collect_list函数。
10、进一步的,所述udf函数的输入参数为gps_list字段、返回值为车辆行驶里程,计算逻辑包括:
11、对压缩存储的单条gps_list字段进行拆分和排序;
12、使用球面距离公式计算相邻两点之间的距离;
13、排除超出正常范围的距离后进行累加,得到车辆行驶里程。
14、进一步的,所述对压缩存储的单条gps_list字段进行拆分和排序的过程具体为:
15、根据第一分隔符将一个gps_list字段值拆分成数组,数组中每个元素代表某一时刻车辆的gps定位;
16、根据第二分隔符将每个元素拆分成包含三个字段的对象,三个字段为经度、纬度和时间戳;
17、根据时间戳对数组中所有对象进行由早到晚排序,得到排序结果。
18、进一步的,所述使用球面距离公式计算相邻两点之间的距离的表达式具体为:
19、l=6371×arccos[cosa2×cosb2×cos(a1-b1)+sina2×sinb2];
20、其中,l表示a点与b点之间的距离;a1表示a点的经度;a2表示a点的纬度;b1表示b点的经度;b2表示b点的纬度。
21、进一步的,所述排除超出正常范围的距离的过程具体为:
22、若某个点与前后相邻2个点的距离均超出正常范围,则从数组中剔除该点对应的元素;
23、若某个点与前一个点的距离超出正常范围,且与后一个点的距离没有超出正常范围,则该点与前一个点的距离不纳入总里程计算;
24、若某个点与后一个点的距离超出正常范围,且与前一个点的距离没有超出正常范围,则该点与后一个点的距离不纳入总里程计算。
25、第二方面,提供了基于开源大数据组件的车辆行驶里程批量处理系统,该系统用于实现如第一方面中任意一项所述的基于开源大数据组件的车辆行驶里程批量处理方法,包括:
26、数据同步模块,用于将数据库中前一时间周期内所有车辆的gps定位数据批量同步到hive中,得到gps表;
27、数据压缩模块,用于使用hive中内置的多行转一列的函数,将gps表中每辆车在前一时间周期的全部gps定位数据压缩成一行的gps_list字段,并写入到第一临时表;
28、函数部署模块,用于使用java语言开发基于临时表中的gps_list字段计算单个车辆行驶里程的udf函数,将udf函数编译成jar包并部署到hive中;
29、批量计算模块,用于利用udf函数,通过hive sql批量计算第一临时表中所有车辆在前一时间周期的车辆行驶里程,并将计算结果存储到第二临时表。
30、第三方面,提供了一种计算机终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面中任意一项所述的基于开源大数据组件的车辆行驶里程批量处理方法。
31、第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行可实现如第一方面中任意一项所述的基于开源大数据组件的车辆行驶里程批量处理方法。
32、与现有技术相比,本专利技术具有以下有益效果:
33、本专利技术提供的基于开源大数据组件的车辆行驶里程批量处理方法,采用了hive的行转列和自定义udf功能,由于hive是一个分布式并行计算框架,在海量数据场景下具有高效的批量计算能力,吞吐量会非常高,可以利用分布式集群在较短时间内计算出海量车辆的行驶里程,百万级的车辆前一天的行驶里程可以在分钟级时间内得到计算结果。
本文档来自技高网...【技术保护点】
1.基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,包括以下步骤:
2.根据权利要求1所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述gps表中的字段包括车辆ID、当前车辆位置的经度、当前车辆位置的纬度和当前时间戳。
3.根据权利要求1所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述多行转一列的函数为collect_set函数或collect_list函数。
4.根据权利要求1所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述UDF函数的输入参数为gps_list字段、返回值为车辆行驶里程,计算逻辑包括:
5.根据权利要求4所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述对压缩存储的单条gps_list字段进行拆分和排序的过程具体为:
6.根据权利要求4所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述使用球面距离公式计算相邻两点之间的距离的表达式具体为:
7.根据权利要求4所述的基于开源大数据组件的车辆行驶里程批量
8.基于开源大数据组件的车辆行驶里程批量处理系统,其特征是,该系统用于实现如权利要求1-7任意一项所述的基于开源大数据组件的车辆行驶里程批量处理方法,包括:
9.一种计算机终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,其特征是,所述处理器执行所述程序时实现如权利要求1-7中任意一项所述的基于开源大数据组件的车辆行驶里程批量处理方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征是,所述计算机程序被处理器执行可实现如权利要求1-7中任意一项所述的基于开源大数据组件的车辆行驶里程批量处理方法。
...【技术特征摘要】
1.基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,包括以下步骤:
2.根据权利要求1所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述gps表中的字段包括车辆id、当前车辆位置的经度、当前车辆位置的纬度和当前时间戳。
3.根据权利要求1所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述多行转一列的函数为collect_set函数或collect_list函数。
4.根据权利要求1所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述udf函数的输入参数为gps_list字段、返回值为车辆行驶里程,计算逻辑包括:
5.根据权利要求4所述的基于开源大数据组件的车辆行驶里程批量处理方法,其特征是,所述对压缩存储的单条gps_list字段进行拆分和排序的过程具体为:
6.根据权利要求4所述的基于...
【专利技术属性】
技术研发人员:李烨,陈卫,王碧林,王守明,毛晶,
申请(专利权)人:四川新网银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。