CN110737667A - 一种基于Spark的索引方法 - Google Patents

一种基于Spark的索引方法 Download PDF

Info

Publication number
CN110737667A
CN110737667A CN201911026342.XA CN201911026342A CN110737667A CN 110737667 A CN110737667 A CN 110737667A CN 201911026342 A CN201911026342 A CN 201911026342A CN 110737667 A CN110737667 A CN 110737667A
Authority
CN
China
Prior art keywords
spark
index
data
interface
query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911026342.XA
Other languages
English (en)
Inventor
王帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Letter Recording Software Technology Co Ltd
Original Assignee
Nanjing Letter Recording Software Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Letter Recording Software Technology Co Ltd filed Critical Nanjing Letter Recording Software Technology Co Ltd
Priority to CN201911026342.XA priority Critical patent/CN110737667A/zh
Publication of CN110737667A publication Critical patent/CN110737667A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于Spark的索引方法,包括如下步骤,S1:在Spark进程中通过自定义消费接口消费实时数据,数据通过索引接口建立索引;S2:修改lucene的原生索引接口;S3:将整个索引程序、查询接口与Spark的服务结合起来;S4:进行数据处理,之后进行数据的查询;主要是在原始的Spark检索上添加了一层索引功能,从而加快了检索性能;该功能在索引层使用的是原生的lucene,通过自定义接口,Spark或者离线程序会将数据索引到HDFS上面,以后的统计分析都可以使用Spark的索引查询快速返回,而在查询语言的使用上选择的是Spark SQL,本发明完美的与Spark SQL引擎结合在一起,这种基于结构化数据的查询语言简化了查询难度,降低了学习成本。

Description

一种基于Spark的索引方法
技术领域
本发明涉及大数据查询处理技术领域,具体为一种基于Spark的索引方法。
背景技术
近年来,随着物联网、社交网络、云计算等技术不断融入我们的生活以及现有的计算能力、存储空间、网络带宽的高速发展,人类积累的数据在互联网、通信、金融、商业、医疗等诸多领域不断地增长和累积。人们不仅希望能够从大数据中提取出有价值的信息,更希望发现能够有效支持生产生活中需要决策的更深层次的规律。但是如何从数亿TB级别的数据中得到更有价值的信息,是科技工作者一直在思考的问题与努力的方向。
从而在该时代背景下,大数据产业蓬勃发展,出现了很多优秀的大数据技术。一如起初开源Hadoop,可以存储TB级的数据,亦可以进行TB级数据的分析。再到后来围绕Hadoop生态圈建立的Hive、Hbase、Pig等,使得人们选择处理的技术简单多样化。更有近年来优秀的大数据处理组件如Spark,Flink等,都使得人们在TB级别数据处理与事实数据处理方面有了长足的进步。
近年来大数据技术有了很大的突破,涌现出很多优秀的项目,但是在处理以及查询分析上面依然有很多难点需要突破。现归纳一下不足之处:
1、数据查询事实性较差,例如hive,hive底层需要走mapreduce,众所周知hadoop的mapreduce在IO交互上面太频繁,效率较差;
2、为了保证查询的时效性,不得不在数据存储格式上面作出妥协。现在流行的Hbase、Cassandra、MongoDB等都为非结构化存储;
3、组件学习成本高。例如使用ElasticSearch、Solr等,都需要再次学习一套完整的API,成本较高;
4、存储格式单一,没有较好的压缩比;
5、基于原始的索引组件开发,缺少优化,使得如lucene等其索引功能没有更好的发挥作用;
6、原始组件分析数据只能读取数据后再处理,在数据检索上缺少索引功能,即使提供了索引功能,在检索易用性上面也会做出妥协。
发明内容
本发明的目的在于提供一种基于Spark的索引方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于Spark的索引方法,包括如下步骤,
S1:在Spark进程中通过自定义消费接口消费实时数据,数据通过索引接口建立索引;
S2:修改lucene的原生索引接口;
S3:将整个索引程序、查询接口与Spark的服务结合起来;
S4:进行数据处理,之后进行数据的查询。
优选的,所述步骤S1中,索引建立之后,在Spark进程中维护索引的合并、删除与更新。
优选的,所述步骤S2中,修改原生索引接口之后,将数据索引到HDFS上面,满足TB级别数据的存储查询。
优选的,所述步骤S3中,索引程序、查询接口与Spark结合后,使用sql语句在Spark中对数据进行查询。
与现有技术相比,本发明的有益效果是:
1、可以根据需求存储结构化或者非结构化数据;
2、支持数据的异构存储,即数据可根据需求选择存储在SATA盘上或者SSD盘上,有助于加快数据的查询;
3、在数据存储的时候添加了索引层,索引可加快查询效率,消除了T+1天可查数据的延迟问题;
4、通过SQL语言查询,兼容标准SQL,支持多维统计,自定义函数等特性,极大的降低了学习成本;
5、通过改进lucene,支持数据存储在HDFS上,满足了大规模数据的存储需求,支持万亿数据的存储;
6、通过lucene做了索引,从而加快了数据的的查询,可实现千亿数据秒级查询。
附图说明
图1为本发明的流程示意图;
图2为本发明的Spark维护HDFS数据索引存储示意图;
图3为本发明的Spark使用Sql检索索引并返回数据示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供一种技术方案:一种基于Spark的索引方法,包括如下步骤,
S1:在Spark进程中通过自定义消费接口消费实时数据,数据通过索引接口建立索引;
S2:修改lucene的原生索引接口;
S3:将整个索引程序、查询接口与Spark的服务结合起来;
S4:进行数据处理,之后进行数据的查询。
进一步的,所述步骤S1中,索引建立之后,在Spark进程中维护索引的合并、删除与更新。
进一步的,所述步骤S2中,修改原生索引接口之后,将数据索引到HDFS上面,满足TB级别数据的存储查询。
进一步的,所述步骤S3中,索引程序、查询接口与Spark结合后,使用sql语句在Spark中对数据进行查询。
工作原理:在Spark进程中通过自定义消费接口消费实时数据,数据通过索引接口建立索引,并在spark中维护索引的合并、删除、更新,保证索引的有效;之后修改lucene的原生索引接口,将数据索引到HDFS上面,从而满足TB级别数据的存储查询;将整个索引程序、查询接口与spark的服务结合起来,使得可以通过SparkSQL的方式去查询数据,增强了易用性;结合之后可检索到数据的时效性得到极大提高,数据经过处理后在1—2分钟内,即可通过sql查询统计到数据。
发明的整体思想是在原始的Spark检索上添加了一层索引功能,从而加快了检索性能;该功能在索引层使用的是原生的lucene,通过自定义接口,Spark或者离线程序会将数据索引到HDFS上面,以后的统计分析都可以使用Spark的索引查询快速返回,而在查询语言的使用上选择的是Spark SQL,本发明完美的与Spark SQL引擎结合在一起,这种基于结构化数据的查询语言简化了查询难度,降低了学习成本。
如图2所示,为Spark维护hdfs数据索引存储过程,分布式进程程序由Spark来维护,离线数据或者实时数据通过接口在Saprk的Executor上面通过自定义的接口来维护,Spark进程来维护索引实现了分布式控制索引的导入导出、合并等。
如图3所示,为Spark使用Sql检索索引并返回数据过程,使用Spark Sql的查询接口对sql进行分发,对数据进行汇聚, 结合自定义的lucene查询接口实现了高效快速的检索,同时还保证了其易用性。
业内的类似技术如ElasticSearch、Solr等都是在lucene的基础上做的索引,也可实现海量数据搜索的检索,但是本发明所阐述的方案在性能上面会有相当明显的优势。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (4)

1.一种基于Spark的索引方法,其特征在于:包括如下步骤,
S1:在Spark进程中通过自定义消费接口消费实时数据,数据通过索引接口建立索引;
S2:修改lucene的原生索引接口;
S3:将整个索引程序、查询接口与Spark的服务结合起来;
S4:进行数据处理,之后进行数据的查询。
2.根据权利要求1所述的一种基于Spark的索引方法,其特征在于:所述步骤S1中,索引建立之后,在Spark进程中维护索引的合并、删除与更新。
3.根据权利要求1所述的一种基于Spark的索引方法,其特征在于:所述步骤S2中,修改原生索引接口之后,将数据索引到HDFS上面,满足TB级别数据的存储查询。
4.根据权利要求1所述的一种基于Spark的索引方法,其特征在于:所述步骤S3中,索引程序、查询接口与Spark结合后,使用sql语句在Spark中对数据进行查询。
CN201911026342.XA 2019-10-26 2019-10-26 一种基于Spark的索引方法 Pending CN110737667A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911026342.XA CN110737667A (zh) 2019-10-26 2019-10-26 一种基于Spark的索引方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911026342.XA CN110737667A (zh) 2019-10-26 2019-10-26 一种基于Spark的索引方法

Publications (1)

Publication Number Publication Date
CN110737667A true CN110737667A (zh) 2020-01-31

Family

ID=69271592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911026342.XA Pending CN110737667A (zh) 2019-10-26 2019-10-26 一种基于Spark的索引方法

Country Status (1)

Country Link
CN (1) CN110737667A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107122443A (zh) * 2017-04-24 2017-09-01 中国科学院软件研究所 一种基于Spark SQL的分布式全文检索***及方法
CN108009270A (zh) * 2017-12-18 2018-05-08 江苏润和软件股份有限公司 一种基于分布式内存计算的文本检索方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107122443A (zh) * 2017-04-24 2017-09-01 中国科学院软件研究所 一种基于Spark SQL的分布式全文检索***及方法
CN108009270A (zh) * 2017-12-18 2018-05-08 江苏润和软件股份有限公司 一种基于分布式内存计算的文本检索方法

Similar Documents

Publication Publication Date Title
US11093466B2 (en) Incremental out-of-place updates for index structures
CN103246749B (zh) 面向分布式计算的矩阵数据库***及其查询方法
CN107291807B (zh) 一种基于图遍历的sparql查询优化方法
CN102521406B (zh) 海量结构化数据复杂查询任务的分布式查询方法和***
CN102521405B (zh) 支持高速加载的海量结构化数据存储、查询方法和***
CN103366015B (zh) 一种基于Hadoop的OLAP数据存储与查询方法
CN103631870B (zh) 一种用于大规模分布式数据处理的***及其方法
CN107040422A (zh) 一种基于物化缓存的网络大数据可视化方法
CN103488704A (zh) 一种数据存储方法及装置
US9229961B2 (en) Database management delete efficiency
CN105574054B (zh) 一种分布式缓存范围查询方法、装置及***
US20170068675A1 (en) Method and system for adapting a database kernel using machine learning
CN104850640A (zh) 一种基于HBase的电网设备状态监测数据存储和查询方法及***
CN103744913A (zh) 一种基于搜索引擎技术的数据库检索方法
US11294816B2 (en) Evaluating SQL expressions on dictionary encoded vectors
Ghotiya et al. Migration from relational to NoSQL database
Sarlis et al. Datix: A system for scalable network analytics
El Alami et al. Supply of a key value database redis in-memory by data from a relational database
Patel et al. Raw data processing framework for IoT
Brezany et al. An elastic OLAP cloud platform
CN108319604B (zh) 一种hive中大小表关联的优化方法
Sawyer et al. Understanding query performance in Accumulo
Mo et al. Asynchronous index strategy for high performance real-time big data stream storage
CN110737667A (zh) 一种基于Spark的索引方法
CN110990368A (zh) 一种全链路数据管理***及其管理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200131