基于Spark平台建立数据索引方法及数据查询方法技术

技术编号:23983409 阅读:87 留言:0更新日期:2020-04-29 12:23
本发明专利技术提供一种基于Spark平台建立数据索引方法,包括,为数据表创建内存索引,该内存索引对应的索引表包括两个字段,两个字段分别表示索引字段,以及该索引字段对应的数据文件清单;扫描数据表下的所有数据文件,针对索引字段的每个值搜寻索引字段值出现在哪些数据文件中,将所有的<索引字段值,数据文件清单>键值对写入索引表中。本发明专利技术在生成内存索引数据时不再索引到文件的偏移量,仅仅索引到文件,索引表数据大大缩小,无需再分配额外的job去分布式并行处理,极大的提升查询性能。

Data index method and data query method based on spark platform

【技术实现步骤摘要】
基于Spark平台建立数据索引方法及数据查询方法
本专利技术涉及一种在数据处理系统上建立索引的方法,尤其涉及一种基于Spark平台建立数据索引方法以及数据查询方法。
技术介绍
随着近20多年来计算技术的不断革新,企业积累了大量数据。数字传感器的进步使得通信系统越来越广泛的使用,尤其是移动平台和移动终端的飞速增长;系统运行产生的大量日志以及越来越多的企业采用无纸化办公的工作方式,这些情况都使得企业积攒了海量数据资源,数据规模已经增长到了传统软件无法承载的地步,并且随着人们对现代科技越来越多的依赖,数据将会以更快的速度增长下去。在分析海量数据的场景下,单台服务器的处理能力已不能满足要求,于是企业就用多台计算机来并行处理这些海量数据,即采用分布式计算架构,典型的代表软件是hadoop、spark等。更准确的说,spark只是一个并行计算框架,而hadoop中包含计算框架MapReduce和分布式文件系统HDFS;Hadoop更广泛地说还包括在其生态系统上的其他系统,如Hbase、Hive等;而Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、SparkStreaming、GraphX、MLlib等子项目,Spark是MapReduce的替代方案,性能提升近百倍,SparkSQL是Spark之上提供结构化数据SQL查询与分析的查询引擎,是MapReduce之上的Hive的替代方案。ApacheSpark是一种快速、通用、可扩展的大数据分析引擎。它是不断壮大的大数据分析解决方案家族中备受关注的明星成员,为分布式数据集的处理提供了一个有效框架,并以高效的方式处理分布式数据集。Spark集批处理、实时流处理、交互式查询与图计算于一体,避免了多种运算场景下需要部署不同集群带来的资源浪费。Spark大数据处理平台在对数据进行分析计算前,首先要将数据文件从磁盘载入内存,而由于目前Spark大数据处理平台不支持对数据文件创建索引并使用索引快速定位要扫描的数据文件清单或者数据文件的一部分,因此,每次计算时都要载入全部的数据文件到内存,造成了大量磁盘IO;而绝大多数情况下,用户对大量数据进行查询时都要指定筛选条件,以便得到自己关心的较少量的查询结果,因此不包含筛选内容的数据文件或数据块无需载入内存扫描。
技术实现思路
本专利技术的目的在于提供一种基于Spark平台建立数据索引方法,在生成内存索引数据时不再索引到文件的偏移量,仅仅索引到文件,索引表数据大大缩小,无需再分配额外的job去分布式并行处理,极大的提升查询性能。本专利技术提供的基于Spark平台建立数据索引方法,包括:(1)为数据表创建内存索引,该内存索引对应的索引表包括两个字段,两个字段分别表示索引字段,以及该索引字段对应的数据文件清单;(2)扫描数据表下的所有数据文件,针对索引字段的每个值搜寻索引字段值出现在哪些数据文件中,将所有的<索引字段值,数据文件清单>键值对写入索引表中。为方便快捷地数据查询,所述步骤(2)中,按照索引字段值的升序或降序将键值对写入索引表中。本专利技术重新设计SparkSQL中的内存索引创建机制,生成的索引表只有索引字段的值、文件清单两列,索引表按照索引字段的值升序或降序排序,索引表数据相对于现有技术缩小了许多。本专利技术还提供一种基于Spark平台建立数据索引方法,建立存储索引,极大地提升查询性能,包括:(1)创建数据表时,设定两个表属性,分别为create.store.index、row.index.rows,分别表示是否创建存储索引、行索引行数;(2)向数据表中导入数据时,先判断是否需要创建存储索引,即,表属性create.store.index是否开启,若开启,则统计需要导入的数据的总行数,按照表属性row.index.rows设置的行索引行数对数据行进行分组;针对每个行组分别计算行组数据的起始地址以及各个列的最大值、最小值、平均值、行个数;将计算得到的每个行组的统计信息写在文件头部,一个行组对应一行统计信息,作为行索引;(3)统计整个文件的数据起始地址以及各个列的最大值、最小值、平均值、行个数,然后将这些统计信息写入文件末尾,单独作为一行,作为文件索引。本专利技术还提供一种基于Spark平台的数据查询方法,利用内存索引进行查询,内存索引数据时不再索引到文件的偏移量,仅仅索引到文件,索引表数据大大缩小,无需再分配额外的job去分布式并行处理,极大的提升查询性能,包括:判断数据表是否包含内存索引,如果不包含内存索引,则针对所有数据文件生成计算job;如果包含内存索引并且查询语句要对索引字段值进行筛选,则读取索引表,根据索引字段值从索引表中获取到数据文件清单,为数据文件清单的每个数据文件生成只扫描该数据文件的计算job。优选地,索引表中的索引字段值以及数据文件清单是按照索引字段值的升序或降序存储的,使用二分法在索引表中查找索引字段值对应的的数据文件清单。优选地,如果包含内存索引,但查询语句不是要对索引字段值进行筛选,则针对所有数据文件分别生成计算job。优选地,在执行计算job过程中,(1)判断是查询语句否包含谓词,如果包含谓词,则对谓词进行解析,获得想要查询的数据;(2)读取数据文件的末尾,判断是否有存储索引;(3)如果有存储索引,则读取索引数据并判断索引的范围是否可能包含所述想要查询的数据,如果可能包含,则加载相应数据到内存中;如果数据文件不可能存在所述想要查询的数据,则返回空数据。优选地,所述步骤(3)具体为,获取文件索引,将所述想要查询的数据是否落入文件索引记载的最大值、最小值之间,如果位于两者之间则索引的范围可能包含所述想要查询的数据;逐条读取行索引,获取要扫描的行组,根据行索引中的行组数据的起始地址读取行组数据,对数据进行解析后加载至内存。本专利技术还提供一种基于Spark平台的数据查询方法,通过存储索引查询数据,极大地提升查询性能,包括:(1)判断是查询语句否包含谓词,如果包含谓词,则对谓词进行解析,获得想要查询的数据;(2)读取数据文件的末尾,判断是否有存储索引;(3)如果有存储索引,则读取索引数据并判断索引的范围是否可能包含所述想要查询的数据,如果可能包含,则加载相应数据到内存中;如果数据文件不可能存在所述想要查询的数据,则返回空数据。优选地,所述步骤(3)具体为,获取文件索引,将所述想要查询的数据是否落入文件索引记载的最大值、最小值之间,如果位于两者之间则索引的范围可能包含所述想要查询的数据;逐条读取行索引,获取要扫描的行组,根据行索引中的行组数据的起始地址读取行组数据,对数据进行解析后加载至内存。本专利技术重新设计SparkSQL中的内存索引创建机制,生成的索引表只有索引字段的值、文件清单两列,索引数据缩小许多,在扫描数据表前,先检索内存索引得到要扫描的文件清单,然后针对这些文件清单生成相对应的计算任务,每个计算任务负责各自的文件扫描,从而避免原先的针对每个数据文件都生成计算任务造成很多任务做无用功。...

【技术保护点】
1.一种基于Spark平台建立数据索引方法,其特征在于:(1)为数据表创建内存索引,该内存索引对应的索引表包括两个字段,两个字段分别表示索引字段,以及该索引字段对应的数据文件清单;(2)扫描数据表下的所有数据文件,针对索引字段的每个值搜寻索引字段值出现在哪些数据文件中,将所有的<索引字段值,数据文件清单>键值对写入索引表中。/n

【技术特征摘要】
1.一种基于Spark平台建立数据索引方法,其特征在于:(1)为数据表创建内存索引,该内存索引对应的索引表包括两个字段,两个字段分别表示索引字段,以及该索引字段对应的数据文件清单;(2)扫描数据表下的所有数据文件,针对索引字段的每个值搜寻索引字段值出现在哪些数据文件中,将所有的<索引字段值,数据文件清单>键值对写入索引表中。


2.如权利要求1所述的基于Spark平台建立数据索引方法,其特征在于:所述步骤(2)中,按照索引字段值的升序或降序将键值对写入索引表中。


3.一种基于Spark平台建立数据索引方法,其特征在于:(1)创建数据表时,设定两个表属性,分别为create.store.index、row.index.rows,分别表示是否创建存储索引、行索引行数;(2)向数据表中导入数据时,先判断是否需要创建存储索引,即,表属性create.store.index是否开启,若开启,则统计需要导入的数据的总行数,按照表属性row.index.rows设置的行索引行数对数据行进行分组;针对每个行组分别计算行组数据的起始地址以及各个列的最大值、最小值、平均值、行个数;将计算得到的每个行组的统计信息写在文件头部,一个行组对应一行统计信息,作为行索引;(3)统计整个文件的数据起始地址以及各个列的最大值、最小值、平均值、行个数,然后将这些统计信息写入文件末尾,单独作为一行,作为文件索引。


4.一种基于Spark平台的数据查询方法,其特征在于:判断数据表是否包含内存索引,如果不包含内存索引,则针对所有数据文件生成计算job;如果包含内存索引并且查询语句要对索引字段值进行筛选,则读取索引表,根据索引字段值从索引表中获取到数据文件清单,为数据文件清单的每个数据文件生成只扫描该数据文件的计算job。


5.如权利要求4所述的基于Spark平台的数据查询方法,其特征在于:索引表中的索引字段值以及数据文件清单是按照索引字段值的升序或降序存储的,使用二分法在...

【专利技术属性】
技术研发人员:陈海涛邢彩燕
申请(专利权)人:南京聚力云成电子科技有限公司
类型:发明
国别省市:江苏;32

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

1