CN113656362B - Spark流文件存储方法及装置 - Google Patents

Spark流文件存储方法及装置 Download PDF

Info

Publication number
CN113656362B
CN113656362B CN202110958886.0A CN202110958886A CN113656362B CN 113656362 B CN113656362 B CN 113656362B CN 202110958886 A CN202110958886 A CN 202110958886A CN 113656362 B CN113656362 B CN 113656362B
Authority
CN
China
Prior art keywords
data
kafka
database
read
summarized
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.)
Active
Application number
CN202110958886.0A
Other languages
English (en)
Other versions
CN113656362A (zh
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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202110958886.0A priority Critical patent/CN113656362B/zh
Publication of CN113656362A publication Critical patent/CN113656362A/zh
Application granted granted Critical
Publication of CN113656362B publication Critical patent/CN113656362B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种Spark流文件存储方法及装置,可用于分布式技术领域,该方法包括:在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。本发明可以实现Spark流文件存储,读写效率高。

Description

Spark流文件存储方法及装置
技术领域
本发明涉及分布式技术领域,尤其涉及一种Spark流文件存储方法及装置。
背景技术
随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务需求,大量的场景需要实时的数据处理结果来进行分析、决策。因此实时数据体系架构的设计也越来越重要,整个实时数据体系架构一般分五层,分别是接入层、存储层、计算层、平台层、和应用层。对于存储层来说,主要对原始数据、清洗关联后的明细数据进行存储,基于统一的实时数据模型分层理念,将不同应用场景的数据分别存储在Kafka、HDFS、Hbase、ElasticSearch、Redis等存储引擎中。
对于非结构化的数据进行存储时,一般都需要进行结构化处理然后写入数据库。然而对于不同接入的非结构化数据,在不经过结构化处理的情况下,如何快速写入存储介质中,供其他层使用是需要解决的问题。
发明内容
本发明实施例提出一种Spark流文件存储方法,用以实现Spark流文件存储,读写效率高,该方法包括:
在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
本发明实施例提出一种Spark流文件存储装置,用以实现Spark流文件存储,读写效率高,该装置包括:
建立连接模块,用于在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
数据读取与解析模块,用于在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
写入模块,用于对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
关闭连接模块,用于在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述Spark流文件存储方法。
本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述Spark流文件存储方法的计算机程序。
在本发明实施例中,在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。本发明实施例提出的方法及装置具有如下有益效果:
1)满足业务需求:具有可扩展性,读写效率高。
2)提高存储性能:更适用于巨量数据,提高了数据库存储性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中Spark流文件存储方法的流程图;
图2为本发明实施例中Spark流文件存储方法的详细流程图;
图3为本发明实施例中Spark流文件存储装置的示意图;
图4为本发明实施例提出的Spark流文件存储装置与其他部分的数据流向示意图;
图5为本发明实施例中计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
图1为本发明实施例中Spark流文件存储方法的流程图,如图1所示,该方法包括:
步骤101,在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
步骤102,在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
步骤103,对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
步骤104,在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
在一实施例中,所述数据库采用ElasticSearch。
ElasticSearch是No SQL数据库的一种,对于实时数据系统中的结构化和非结构化数据,依赖应用场景选择合适的数据库,此处选择了ElasticSearch,主要是考虑了一下几个因素:
(1)ElasticSearch是一个分布式的大数据搜索引擎,天然具备横向扩容的能力,可以存储海量的安全数据。
(2)ElasticSearch以json document的形式存储数据,具备动态可变的schema/mapping,可以灵活存储不同类型的结构化数据和非结构化数据,并随意添加新的字段,使其能够吸纳任意来源、格式、类型的安全数据。
(3)对比其他具有搜索能力的大数据系统,ElasticSearch的优势在于首屈一指的全文检索、模糊查询能力,结合丰富的多维分析能力,内置的机器学习能力,高并发的支撑能力,再加上海量数据的毫秒级查询响应,使得ElasticSearch能轻松应对安全大数据分析的工作。
(4)得益于ElasticSearch强大的搜索能力和Kibana优秀的可视化功能,能够从多个维度,对数据进行聚合分析并且展示。
在一实施例中,从kafka中读取数据,包括:
基于Structured Streaming Spark的流式readStream()从kafka中读取数据。
在一实施例中,从kafka中读取数据,包括:
从kafka中读取不超过预设最大读取记录数的数据。
在上述实施例中,采用max.poll.Records参数设置kafka消费一次调用poll()返回的预设最大读取记录数。
在本发明实施例中,需要建立与数据库的连接,写入数据库和关闭与数据库的连接,具体实施时,使用Structured Streaming Spark进行流式处理的Sink有File Sink、Console Sink、Memory Sink和Foreach Sink,但是前面几种对于不同类型的结构化数据和非结构化数据实现存储程序并不通用,因此本发明实施例采用了Foreach Sink方法,按照Spark官网规范,需要实现在实现ForeachWrite[T](),即open()、process()、close()这三个方法,其中:
open()用于实现与建立与数据库的连接;
process()用于实现写入数据库;
close()用于实现关闭与数据库的连接。
在实现以上三个方式时,减少建立与关闭数据库连接的次数,因此,在本发明实施例中,若在第一预设时长内,首次从kafka中读取数据时,建立与数据库的连接,调用open(),不需要在每条数据都进行一次建立与数据库的连接。
在process()对数据写入的时候,先对获得的数据进行汇总,在汇总的数据达到预设规模后,做一个批次batch提交,避免单条写入,提高写入数据库的效率。
同样地,在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接,也是为了避免长时间占用数据库。
通过上述步骤,可提升Structured Streaming Spark对非结构化数据存储性能。
图2为本发明实施例中Spark流文件存储方法的详细流程图,如图2所示,包括:
步骤201,在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
步骤202,在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
步骤203,对获得的数据进行汇总,判断汇总的数据是否达到预设规模,若是,进入步骤204,否则进入步骤202;
步骤204,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
步骤205,判断是否第二预设时长都未读取到数据,若是,进入步骤206,否则进入步骤202;
步骤206,关闭与数据库的连接。
当然,可以理解的是,还可以有其他步骤,相关变化例均应落入本发明的保护范围。
综上所述,在本发明实施例提出的方法具有如下有益效果:
1)满足业务需求:具有可扩展性,读写效率高。
2)提高存储性能:更适用于巨量数据,提高了数据库存储性能。
本发明实施例还提出一种Spark流文件存储装置,其原理与Spark流文件存储方法类似,这里不再赘述。
图3为本发明实施例中Spark流文件存储装置的示意图,图4为本发明实施例提出的Spark流文件存储装置与其他部分的数据流向示意图,具体包括:
建立连接模块301,用于在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
数据读取与解析模块302,用于在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
写入模块303,用于对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
关闭连接模块304,用于在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
在一实施例中,所述数据库采用ElasticSearch。
在一实施例中,数据读取与解析模块具体用于:
基于Structured Streaming Spark的流式readStream()从kafka中读取数据。
在一实施例中,数据读取与解析模块具体用于:
从kafka中读取不超过预设最大读取记录数的数据。
综上所述,在本发明实施例提出的装置具有如下有益效果:
1)满足业务需求:具有可扩展性,读写效率高。
2)提高存储性能:更适用于巨量数据,提高了数据库存储性能。
本发明的实施例还提供一种计算机设备,图5为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的Spark流文件存储方法中全部步骤,所述计算机设备具体包括如下内容:
处理器(processor)501、存储器(memory)502、通信接口(CommunicationsInterface)503和通信总线504;
其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的Spark流文件存储方法中的全部步骤。
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的Spark流文件存储方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的Spark流文件存储方法的全部步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种Spark流文件存储方法,其特征在于,包括:
在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接;
所述数据库采用ElasticSearch;
从kafka中读取数据,包括:基于Structured Streaming Spark的流式readStream()从kafka中读取数据。
2.如权利要求1所述的Spark流文件存储方法,其特征在于,从kafka中读取数据,包括:
从kafka中读取不超过预设最大读取记录数的数据。
3.一种Spark流文件存储装置,其特征在于,包括:
建立连接模块,用于在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
数据读取与解析模块,用于在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
写入模块,用于对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
关闭连接模块,用于在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接;
所述数据库采用ElasticSearch;
数据读取与解析模块具体用于:基于Structured Streaming Spark的流式readStream()从kafka中读取数据。
4.如权利要求3所述的Spark流文件存储装置,其特征在于,数据读取与解析模块具体用于:
从kafka中读取不超过预设最大读取记录数的数据。
5.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至2任一项所述方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可在处理器上运行的计算机程序,所述计算机程序被处理器执行时实现权利要求1至2任一项所述方法。
CN202110958886.0A 2021-08-20 2021-08-20 Spark流文件存储方法及装置 Active CN113656362B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110958886.0A CN113656362B (zh) 2021-08-20 2021-08-20 Spark流文件存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110958886.0A CN113656362B (zh) 2021-08-20 2021-08-20 Spark流文件存储方法及装置

Publications (2)

Publication Number Publication Date
CN113656362A CN113656362A (zh) 2021-11-16
CN113656362B true CN113656362B (zh) 2024-02-23

Family

ID=78481458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110958886.0A Active CN113656362B (zh) 2021-08-20 2021-08-20 Spark流文件存储方法及装置

Country Status (1)

Country Link
CN (1) CN113656362B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649670A (zh) * 2016-12-14 2017-05-10 北京五八信息技术有限公司 基于流式计算的数据监控方法及装置
CN109271358A (zh) * 2018-11-15 2019-01-25 深圳乐信软件技术有限公司 数据汇总方法、查询方法、装置、设备及存储介质
CN109542889A (zh) * 2018-10-11 2019-03-29 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质
CN112100148A (zh) * 2020-07-31 2020-12-18 紫光云(南京)数字技术有限公司 一种打包日志的增量处理方法
CN113220757A (zh) * 2021-04-24 2021-08-06 上海钢银科技发展有限公司 实时数仓自动etl方法、系统、设备及计算机存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4589427B2 (ja) * 2008-08-06 2010-12-01 株式会社日立製作所 データベース管理方法、データベース管理装置及びデータベース管理プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649670A (zh) * 2016-12-14 2017-05-10 北京五八信息技术有限公司 基于流式计算的数据监控方法及装置
CN109542889A (zh) * 2018-10-11 2019-03-29 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质
CN109271358A (zh) * 2018-11-15 2019-01-25 深圳乐信软件技术有限公司 数据汇总方法、查询方法、装置、设备及存储介质
CN112100148A (zh) * 2020-07-31 2020-12-18 紫光云(南京)数字技术有限公司 一种打包日志的增量处理方法
CN113220757A (zh) * 2021-04-24 2021-08-06 上海钢银科技发展有限公司 实时数仓自动etl方法、系统、设备及计算机存储介质

Also Published As

Publication number Publication date
CN113656362A (zh) 2021-11-16

Similar Documents

Publication Publication Date Title
EP3158480B1 (en) Data query method and apparatus
US11907216B2 (en) Multi-language fusion query method and multi-model database system
CN106897322B (zh) 一种数据库和文件系统的访问方法和装置
Tas et al. An approach to standalone provenance systems for big social provenance data
CN107038161B (zh) 一种用于过滤数据的设备及方法
CN103440288A (zh) 一种大数据存储方法及装置
CN111221791A (zh) 一种多源异构数据导入数据湖的方法
CN108664516A (zh) 查询优化方法及相关装置
CN105095247B (zh) 符号数据分析方法和系统
Ahmed et al. A literature review on NoSQL database for big data processing
CN106611037A (zh) 用于分布式图计算的方法与设备
CN105550270B (zh) 数据库查询方法和装置
CN109033109A (zh) 数据处理方法及系统
CN104657435A (zh) 一种应用数据的存储管理方法和网络管理系统
Mehmood et al. Distributed real-time ETL architecture for unstructured big data
Zheng et al. Big data storage and management in SaaS applications
CN104537012B (zh) 数据处理方法和装置
US10776368B1 (en) Deriving cardinality values from approximate quantile summaries
Terzi et al. Evaluations of big data processing
Anselma et al. A comprehensive approach to ‘now’in temporal relational databases: Semantics and representation
CN113656362B (zh) Spark流文件存储方法及装置
Fiannaca et al. Benchmarking of relational and nosql databases to determine constraints for querying robot execution logs
CN108319604A (zh) 一种hive中大小表关联的优化方法
CN114969189A (zh) 一种数据库连接池中连接确定方法及装置
CN112989424A (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
GR01 Patent grant
GR01 Patent grant