一种基于Spark框架进行全文检索的实现方法技术

技术编号:17779871 阅读:77 留言:0更新日期:2018-04-22 08:27
本发明专利技术公开了一种基于Spark框架进行全文检索的实现方法,属于大数据处理领域。该方法首先接收待执行SQL语句,生成语法树并转换成相应的逻辑计划;然后,从Hive中获取检索所有表的元数据,寻找支持全文检索的字段,并通过字段哈希索引对数据块进行初步裁剪;继而,根据查询条件从文件元数据中获取数据块所具体存放的磁盘位置;最后,将逻辑执行计划转换为可分布式执行的任务集合,通过各个数据块位置来确定任务具体执行的目标节点和任务所具体执行的目标进程;对任务进行分发执行,并汇总执行结果,迭代获取最终结果。该方法具有较高的效率,可以快速的完成海量数据的全文检索,在大数据处理领域具有很强的实用性和应用范围,具有很广泛的应用前景。

【技术实现步骤摘要】
一种基于Spark框架进行全文检索的实现方法
本专利技术属于大数据处理领域,具体涉及一种基于Spark框架进行全文检索的实现方法。
技术介绍
随着计算机技术的不断发展和信息化程度的不断提高,数据量迅速增长,大数据应用越来越广泛。如,在网络安全上,使用大数据技术分析网络攻击行为;在电子商务上,使用大数据技术分析用户购物喜好或最受青睐的商品;在城市建设上,利用大数据技术构建智慧城市,方便人民出行。诸如此类,大数据技术在建设节约型社会,提高生成效率等方面起到了积极的推动作用;但随着数据量的持续增大和大数据应用的不断发展,面向海量数据的存储和应用也在蓬勃发展,随之而来的是对检索大数据的要求越来越高。在海量数据检索应用中,全文检索是最常用的统计功能之一,其可用性和效率直接影响了业务应用。全文检索是一种将文件中所用文本与检索项匹配的文字资料检索方法,可以方便的进行对数据的相关统计和分析;而Apache基金会的Spark框架是一个通用并行框架,具有较高的效率及可用性,提供了同Hive一样的HiveQL接口;但是原生的Spark框架并未支持全文检索这一检索方式。因此,如何使用Spark框架来进行全文检索是一个需要解决的关键问题。
技术实现思路
本专利技术为了解决上述问题,提出了一种基于Spark框架进行全文检索的实现方法;通过对数据进行索引创建和查询,高效的对海量数据进行全文检索,并使用索引和缓存来提高全文检索的效率,提高全文检索的可用性。具体步骤如下:步骤一、针对数据查询和数据分析场景,spark框架通过Hive2JDBC接口接收用户提交的待执行SQL语句;步骤二、对待执行的SQL语句使用sparksql语法解析器进行语法解析,生成语句相对应的语法树;步骤三、对语法树中的每一个节点进行迭代解析,将该语法树转换成相应的逻辑计划,并将逻辑计划中全文检索的相关节点解析为Spark中的自定义函数。每一节点即为一个语法结构,每个语法结构都有相应的逻辑执行计划;逻辑执行计划中存储的是查询条件。步骤四、通过Hive接口的服务端口,Spark框架获取对待执行SQL语句进行检索的所有表的元数据;所有表的元数据均存储在Hive元数据服务中。Spark框架进行全文检索所使用的数据结构,包括两部分,第一部分是表的元数据,第二部分是数据块和索引。其中,表的元数据又包括字段元数据,分区元数据,类型元数据和文件元数据;字段元数据包括字段名称和字段类型;分区元数据包括分区类型和分区名;类型元数据包括表类型和支持全文检索的字段;文件元数据包括文件名,文件地址和字段哈希索引;数据块和索引包括n个时间分区,每个时间分区中分别包括若干数据块和索引;每个数据块各对应一个索引;步骤五、针对某个表的元数据,根据类型元数据标记的表类型,判断该表类型是否支持全文检索,如果是,获取支持全文检索的字段名称,进入步骤六;否则,对该表的元数据不予处理,依次选取下一个表的元数据继续判断是否支持全文检索。步骤六、根据逻辑计划存储的查询条件和当前表的元数据,判断某文件元数据中的字段哈希索引与查询条件中的哈希值是否一致,如果是,保留该文件元数据,进入步骤七;否则,剪裁去除不符合条件的文件元数据,顺序选取当前表的元数据中下一个文件元数据继续判断哈希索引;步骤七、通过文件元数据中的文件名,解析得到文件所属的具体磁盘位置,将位置对应的数据块存储于逻辑执行计划中;步骤八、根据文件元数据中的信息,将全文检索的条件以及相关的查询条件,均转换为Lucene文件格式的索引中使用的查询条件,并存于逻辑执行计划中。同时,将逻辑执行计划中的其他检索条件通过迭代的形式体现于逻辑执行计划中。步骤九、将逻辑执行计划中的多个分区根据Spark框架中的DAG模型进行分割,根据Lucene文件格式的索引中使用的查询条件,将每个分区转换生成一个任务,得到并发执行任务集合;步骤十、根据逻辑执行计划中各个数据块和数据块对应的磁盘位置,确定各个任务具体执行的目标节点;步骤十一、将各个数据块的特征值进行哈希计算,通过相匹配的方法来确定每一个任务的具体执行进程;步骤十二、将每个并发执行任务根据任务分发框架,提交到各个目标节点的执行进程中进行执行;步骤十三、汇总每个任务的执行结果,待所有任务全部执行完毕后,根据DAG模型变化后的依赖结构,依次进行后续的迭代计算,直至得到最终的检索结果,返回给用户。本专利技术的优点及带来的有益效果在于:1)、一种基于Spark框架进行全文检索的实现方法,使用该方法进行大数据检索时具有较高的效率,可以快速的完成海量数据的全文检索,在大数据处理领域具有很强的实用性和应用范围,具有很广泛的应用前景。2)、一种基于Spark框架进行全文检索的实现方法,不仅能够基于Spark对海量数据进行全文检索,同时还能通过一些索引和缓存的使用来减少对系统资源的使用,提高检索的效率,降低延时,符合当前大数据分析检索应用的实际需求。附图说明图1为本专利技术基于Spark框架进行全文检索实现的表数据组织结构;图2为本专利技术基于Spark框架进行全文检索的实现方法的流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对根据本专利技术一个实施例的层次分段式的备份数据组织管理方法进一步详细说明。本专利技术首先在接收用户提交的SQL查询语句后,进行语法解析生成SQL语句的语法树,通过对语法树的内容进行进一步解析来生成检索的逻辑执行计划,在生成逻辑执行计划的过程中,将全文检索相关的语句解析为Spark中的自定义函数。然后,从Hive中获取对执行SQL语句进行检索的表的元数据,判断被全文检索的字段是否支持全文检索,若支持,则根据检索的具体条件通过文件元数据中的字段哈希索引对数据块进行初步的裁剪,以减少被检索的文件数据。继而,根据文件元数据中的信息,将全文检索的条件以及相关的查询条件转换为Lucene文件格式索引中的查询条件并存于逻辑执行计划中;从文件元数据中获取数据块所具体存放的磁盘位置,也存放于逻辑执行计划中;将逻辑执行计划中的其它检索条件通过迭代的形式体现于逻辑执行计划中。最后,将逻辑执行计划根据Spark的DAG模型,转换为可分布式执行的任务集合,通过逻辑执行计划中所保存的各个数据块位置来确定任务具体执行的目标节点。通过对任务目标数据块的特征值得哈希计算,来确定任务所具体执行的目标进程,以此来保证对缓存的有效重复使用,来提高查询的效率。对任务进行分发执行,并汇总执行结果,根据执行计划进行后续的迭代计算,获取检索的最终结果,返回给提交检索的用户。如图2所示,基于Spark进行全文检索的操作过程具体步骤如下:步骤一、针对数据查询和数据分析场景,spark框架通过Hive2JDBC接口接收用户提交的待执行SQL语句;步骤二、对待执行的SQL语句使用sparksql语法解析器进行语法解析,生成语句相对应的语法树;步骤三、对语法树中的每一个节点根据预设的解析策略进行进一步的迭代解析,迭代过程中将全文检索的相关节点解析为Spark中的自定义函数,从而将该语法树转换成相应的逻辑计划。每一节点即为一个语法结构,每个语法结构都有相应的逻辑执行计划;逻辑计划中存储的是查询条件。步骤四、通过Hive接口的服务端口,Spark框架获取被待本文档来自技高网...
一种基于Spark框架进行全文检索的实现方法

【技术保护点】
一种基于Spark框架进行全文检索的实现方法,其特征在于,具体步骤如下:步骤一、针对数据查询和数据分析场景,spark框架通过Hive2 JDBC接口接收用户提交的待执行SQL语句;步骤二、对待执行的SQL语句使用spark sql语法解析器进行语法解析,生成语句相对应的语法树;步骤三、对语法树中的每一个节点进行迭代解析,将该语法树转换成相应的逻辑计划,并将逻辑计划中全文检索的相关节点解析为Spark中的自定义函数;步骤四、通过Hive接口的服务端口,Spark框架获取对待执行SQL语句进行检索的所有表的元数据;步骤五、针对某个表的元数据,根据类型元数据标记的表类型,判断该表类型是否支持全文检索,如果是,获取支持全文检索的字段名称,进入步骤六;否则,对该表的元数据不予处理,依次选取下一个表的元数据继续判断是否支持全文检索;步骤六、根据逻辑计划存储的查询条件和当前表的元数据,判断某文件元数据中的字段哈希索引与查询条件中的哈希值是否一致,如果是,保留该文件元数据,进入步骤七;否则,剪裁去除不符合条件的文件元数据,顺序选取当前表的元数据中下一个文件元数据继续判断哈希索引;步骤七、通过文件元数据中的文件名,解析得到文件所属的具体磁盘位置,将位置对应的数据块存储于逻辑执行计划中;步骤八、根据文件元数据中的信息,将全文检索的条件以及相关的查询条件,均转换为Lucene文件格式的索引中使用的查询条件,并存于逻辑执行计划中;同时,将逻辑执行计划中的其他检索条件通过迭代的形式体现于逻辑执行计划中;步骤九、将逻辑执行计划中的多个分区根据Spark框架中的DAG模型进行分割,根据Lucene文件格式的索引中使用的查询条件,将每个分区转换生成一个任务,得到并发执行任务集合;步骤十、根据逻辑执行计划中各个数据块和数据块对应的磁盘位置,确定各个任务具体执行的目标节点;步骤十一、将各个数据块的特征值进行哈希计算,通过相匹配的方法来确定每一个任务的具体执行进程;步骤十二、将每个并发执行任务根据任务分发框架,提交到各个目标节点的执行进程中进行执行;步骤十三、汇总每个任务的执行结果,待所有任务全部执行完毕后,根据DAG模型变化后的依赖结构,依次进行后续的迭代计算,直至得到最终的检索结果,返回给用户。...

【技术特征摘要】
1.一种基于Spark框架进行全文检索的实现方法,其特征在于,具体步骤如下:步骤一、针对数据查询和数据分析场景,spark框架通过Hive2JDBC接口接收用户提交的待执行SQL语句;步骤二、对待执行的SQL语句使用sparksql语法解析器进行语法解析,生成语句相对应的语法树;步骤三、对语法树中的每一个节点进行迭代解析,将该语法树转换成相应的逻辑计划,并将逻辑计划中全文检索的相关节点解析为Spark中的自定义函数;步骤四、通过Hive接口的服务端口,Spark框架获取对待执行SQL语句进行检索的所有表的元数据;步骤五、针对某个表的元数据,根据类型元数据标记的表类型,判断该表类型是否支持全文检索,如果是,获取支持全文检索的字段名称,进入步骤六;否则,对该表的元数据不予处理,依次选取下一个表的元数据继续判断是否支持全文检索;步骤六、根据逻辑计划存储的查询条件和当前表的元数据,判断某文件元数据中的字段哈希索引与查询条件中的哈希值是否一致,如果是,保留该文件元数据,进入步骤七;否则,剪裁去除不符合条件的文件元数据,顺序选取当前表的元数据中下一个文件元数据继续判断哈希索引;步骤七、通过文件元数据中的文件名,解析得到文件所属的具体磁盘位置,将位置对应的数据块存储于逻辑执行计划中;步骤八、根据文件元数据中的信息,将全文检索的条件以及相关的查询条件,均转换为Lucene文件格式的索引中使用的查询条件,并存于逻辑执行计划中;同时,将逻辑执行计划中的其他检索条件通过迭代的形式体现于逻辑执行计划中;步骤九、将逻辑执行计划中的多个分区根据Spark框架中的DAG...

【专利技术属性】
技术研发人员:强倩孙昊良张慧琳周渊张晨李斌斌刘庆良
申请(专利权)人:北京赛思信安技术股份有限公司国家计算机网络与信息安全管理中心
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1