[发明专利]一种基于Spark SQL的分布式全文检索系统及方法有效
申请号: | 201710269870.2 | 申请日: | 2017-04-24 |
公开(公告)号: | CN107122443B | 公开(公告)日: | 2019-09-17 |
发明(设计)人: | 许利杰;崔光范;刘杰;马志柔;吴怀林;叶丹 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F16/33 | 分类号: | G06F16/33 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;顾炜 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于Spark SQL的分布式全文检索系统及方法,包括SQL翻译层、数据源管理层、并行计算层、分布式存储层,在SQL翻译层中提出了基于SQL的全文检索文法以及全文检索SQL语句在SQL翻译层各模块间的翻译过程;在数据源管理模块设计了全文检索过程的并行化方法;检索优化模块中,设计了两种索引存储模型和相应的查询时原表数据还原策略,其中基于索引指定列存储模型设计了一种用于在查询时还原原表数据、复杂度为O(n)的分区对齐连接算法。在两种存储模型下,索引构建时间缩短为传统数据库的0.6%/0.5%,查询时间缩短为传统数据库的1%/10%,索引存储量减少为传统数据库的55.0%。增强了Spark SQL数据分析功能,能够满足传统业务迁移和现有业务对海量数据进行全文检索的需求。 | ||
搜索关键词: | 一种 基于 sparksql 分布式 全文 检索系统 方法 | ||
【主权项】:
1.一种基于Spark SQL的分布式全文检索系统,其特征在于:包括SQL翻译层、数据源管理层、并行计算层、分布式存储层;SQL翻译层定义了全文检索文法,包括索引建立文法和查询文法,通过接收用户输入的全文检索SQL语句,翻译转换为对索引数据源的接口调用;该层包括文法解析模块、元数据绑定和校验模块、计划树优化模块、物理计划生成模块和物理计划执行模块;文法解析模块首先对输入的SQL语句进行切分,去掉空格形成词序数组;之后根据全文检索文法,提取词序数组中的关键信息,在索引建立过程中,关键信息包括原表名、索引表名、索引列、存储模型,在查询过程中,关键信息包括索引表名、返回结果包含的列名、查询类型、查询条件,这些关键信息分别形成一个语法节点,最终形成一颗语法树;然后对语法树进行遍历,对索引建立语句形成的语法树中原表名节点转换为未关联元数据的数据源节点,索引列节点转换为映射节点,索引表名和存储模型节点转换为索引建立节点,形成逻辑计划树;对查询语句形成的语法树中索引表名节点转换为未关联元数据的数据源节点,返回结果包含的列名节点转换为映射节点,查询类型和查询条件语法树节点转换为查询条件计划树节点,形成逻辑计划树;元数据绑定和校验模块对文法解析模块生成的逻辑计划树中实际类型为表、列、视图的节点与元数据仓库进行关联,校验成功的同时将这些节点替换为关联元数据的数据源节点;计划树优化模块仅对索引查询的计划树进行优化,该计划树优化模块将查询条件计划树节点利用过滤下推技术下推到数据源节点并去掉计划树中的查询条件计划树节点,同时利用列裁剪技术将映射节点包含的映射内容下推到数据源节点并去掉计划树中的映射节点;在索引建立过程中,物理计划生成模块合并数据源节点、映射节点和索引建立节点生成索引建立物理计划节点,在查询过程中,将数据源节点转换为扫描数据源物理计划节点,生成物理计划树;在索引建立过程中,物理计划执行模块将索引建立物理计划节点转化为对索引数据源索引建立接口的调用,调用参数包含了原表名、索引列、存储模型和索引表名,然后索引表的元数据信息中加入原表的名称并存入元数据仓库,在查询过程中,物理计划执行模块将扫描数据源物理计划节点转化为对索引数据源查询接口的调用,调用参数包含了索引表名、查询类型和条件、返回结果包含的列名;数据源管理层,根据SQL翻译层对索引数据源的接口调用,转换为索引建立或查询的数据处理逻辑,交给并行计算层执行;数据源管理层包括数据源管理模块和检索优化模块;数据源管理模块管理目前Spark支持的所有数据源,根据SQL翻译层的索引数据源调用,实例化索引数据源,索引数据源包含全文检索过程的并行化方法即索引建立过程并行化和查询过程并行化;数据源管理模块将实例化的索引数据源传入检索优化模块对索引数据源中的索引建立和查询过程进行优化,检索优化模块针对索引建立过程设计了两种存储模型,包括全量存储模型和索引指定列存储模型,针对查询过程为与存储模型相对应的原表数据还原策略,原表数据还原策略的输出为得分与相对应的原表数据拼接后的结果,其中,基于索引指定列存储模型为一种用于在查询时还原原表数据、复杂度为O(n)的分区对齐连接算法,该算法获取原表数据并与得分数据进行拼接;最终,检索优化模块的输出为优化过的索引建立或查询过程的数据处理逻辑,交给并行计算层;并行计算层,接收数据源管理层的数据处理逻辑,生成作业,并对作业进行规划,分配集群资源,将作业数据处理逻辑分发到每个物理机器上,之后,各物理机器上并行执行作业;分布式存储层接收并行计算层对于文件读写的接口调用,采用分布式读写的方式进行索引的建立和查询,建立的索引和查询的结果都存储在分布式索引层,并返回执行结果。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710269870.2/,转载请声明来源钻瓜专利网。
- 上一篇:一种分布式数据库及其访问方法
- 下一篇:一种法律知识图谱自动构建方法