[发明专利]一种基于Spark的大规模分布式DataFrame的查询方法有效
申请号: | 201910347850.1 | 申请日: | 2019-04-28 |
公开(公告)号: | CN110046176B | 公开(公告)日: | 2023-03-31 |
发明(设计)人: | 顾荣;黄宜华;施军 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455;G06F16/27;G06F16/22 |
代理公司: | 苏州威世朋知识产权代理事务所(普通合伙) 32235 | 代理人: | 杨林洁 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 spark 大规模 分布式 dataframe 查询 方法 | ||
1.一种基于Spark的大规模分布式DataFrame的查询方法,包括以下步骤:
(1)采用Python作为编程语言,基于Spark分布式平台,将Spark原生DataFrame的查询接口封装成类Pandas DataFrame接口,以消除与Pandas DataFrame API的不兼容性;
(2)基于Spark分布式平台,构建轻量级全局索引,利用轻量级全局索引实现大规模DataFrame上的基于位置的点、切片、列表查询,通过遍历Spark RDD所有分区实现基于标签的点、切片、列表查询,且API与Pandas DataFrame兼容;
(3)进一步基于分布式内存数据库Redis,构建辅助索引,优化基于标签的切片查询的性能;
(4)进一步在Spark RDD每个分区构建局部索引,基于共享内存对象数据库PlasmaStore进行索引的存储,优化Spark RDD分区查询的性能;
所述步骤(2)中,轻量级全局索引的构建是通过收集Spark RDD每个分区的元数据,进一步通过全局编序,形成轻量级全局索引,能够快速定位记录所在的分区位置;
所述步骤(3)中,辅助索引的构建,是通过将标签和位置的映射关系写入分布式内存数据库Redis,从而通过查询Redis获得标签对应的位置,转化为基于位置的查询,避免了步骤(2)中基于标签的切片查询中遍历Spark RDD所有分区的开销,提高了执行性能;
所述步骤(4)中,局部索引的构建是通过对Spark RDD每个分区数据构建索引,并且以共享内存对象的形式将索引对象存储到共享内存对象数据库Plasma Store中,实现一次构建多次复用,从而提高分区数据的查询性能。
2.根据权利要求1所述的一种基于Spark的大规模分布式DataFrame的查询方法,其特征在于:所述步骤(1)中采用DataFrame模型,在Python程序中通过包的形式提供类PandasDataFrame API,而程序能够运行在Spark分布式计算平台上。
3.根据权利要求1所述的一种基于Spark的大规模分布式DataFrame的查询方法,其特征在于:所述步骤(2)中,基于位置的切片、列表查询,通过在Spark Driver端利用轻量级全局索引计算出所有查询的目标记录的位置,将查询的目标记录的位置发送到每个分区,进行批量查询,大部分操作只需遍历一次Spark RDD所有分区,提高了查询的性能;而基于标签的切片查询则是通过扫描一遍Spark RDD分区,确认起始和结束端点位置,转化为基于位置的切片查询;基于标签的列表查询则是通过直接遍历Spark所有数据,进行批量查询,再将结果按照查询顺序进行排序得到最终结果;基于位置和基于标签的切片查询均支持顺序和逆序查询,步长可变;基于位置的列表查询支持顺序和无序查询;基于标签的列表查询支持无序查询。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910347850.1/1.html,转载请声明来源钻瓜专利网。