[发明专利]一种基于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所有数据,进行批量查询,再将结果按照查询顺序进行排序得到最终结果;基于位置和基于标签的切片查询均支持顺序和逆序查询,步长可变;基于位置的列表查询支持顺序和无序查询;基于标签的列表查询支持无序查询。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910347850.1/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top