一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

Spark流文件存储方法及装置与流程

2021-11-18 00:00:00 来源:中国专利 TAG:

spark流文件存储方法及装置
技术领域
1.本发明涉及分布式技术领域,尤其涉及一种spark流文件存储方法及装置。


背景技术:

2.随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架mapreduce已经不能满足业务需求,大量的场景需要实时的数据处理结果来进行分析、决策。因此实时数据体系架构的设计也越来越重要,整个实时数据体系架构一般分五层,分别是接入层、存储层、计算层、平台层、和应用层。对于存储层来说,主要对原始数据、清洗关联后的明细数据进行存储,基于统一的实时数据模型分层理念,将不同应用场景的数据分别存储在kafka、hdfs、hbase、elasticsearch、redis等存储引擎中。
3.对于非结构化的数据进行存储时,一般都需要进行结构化处理然后写入数据库。然而对于不同接入的非结构化数据,在不经过结构化处理的情况下,如何快速写入存储介质中,供其他层使用是需要解决的问题。


技术实现要素:

4.本发明实施例提出一种spark流文件存储方法,用以实现spark流文件存储,读写效率高,该方法包括:
5.在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
6.在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
7.对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
8.在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
9.本发明实施例提出一种spark流文件存储装置,用以实现spark流文件存储,读写效率高,该装置包括:
10.建立连接模块,用于在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
11.数据读取与解析模块,用于在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
12.写入模块,用于对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
13.关闭连接模块,用于在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
14.本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述spark流文件存储方法。
15.本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述spark流文件存储方法的计算机程序。
16.在本发明实施例中,在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。本发明实施例提出的方法及装置具有如下有益效果:
17.1)满足业务需求:具有可扩展性,读写效率高。
18.2)提高存储性能:更适用于巨量数据,提高了数据库存储性能。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
20.图1为本发明实施例中spark流文件存储方法的流程图;
21.图2为本发明实施例中spark流文件存储方法的详细流程图;
22.图3为本发明实施例中spark流文件存储装置的示意图;
23.图4为本发明实施例提出的spark流文件存储装置与其他部分的数据流向示意图;
24.图5为本发明实施例中计算机设备的示意图。
具体实施方式
25.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
26.在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
27.图1为本发明实施例中spark流文件存储方法的流程图,如图1所示,该方法包括:
28.步骤101,在第一预设时长内首次从kafka中读取数据时,建立与数据库的连接;
29.步骤102,在获得从kafka读取的数据后,解析数据获得每条数据写入数据库的文件路径和文件名;
30.步骤103,对获得的数据进行汇总,在汇总的数据达到预设规模后,根据汇总的数据中每条数据的文件路径和文件名,将汇总的数据写入数据库;
31.步骤104,在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接。
32.在一实施例中,所述数据库采用elasticsearch。
33.elasticsearch是no sql数据库的一种,对于实时数据系统中的结构化和非结构化数据,依赖应用场景选择合适的数据库,此处选择了elasticsearch,主要是考虑了一下几个因素:
34.(1)elasticsearch是一个分布式的大数据搜索引擎,天然具备横向扩容的能力,可以存储海量的安全数据。
35.(2)elasticsearch以json document的形式存储数据,具备动态可变的schema/mapping,可以灵活存储不同类型的结构化数据和非结构化数据,并随意添加新的字段,使其能够吸纳任意来源、格式、类型的安全数据。
36.(3)对比其他具有搜索能力的大数据系统,elasticsearch的优势在于首屈一指的全文检索、模糊查询能力,结合丰富的多维分析能力,内置的机器学习能力,高并发的支撑能力,再加上海量数据的毫秒级查询响应,使得elasticsearch能轻松应对安全大数据分析的工作。
37.(4)得益于elasticsearch强大的搜索能力和kibana优秀的可视化功能,能够从多个维度,对数据进行聚合分析并且展示。
38.在一实施例中,从kafka中读取数据,包括:
39.基于structured streaming spark的流式readstream()从kafka中读取数据。
40.在一实施例中,从kafka中读取数据,包括:
41.从kafka中读取不超过预设最大读取记录数的数据。
42.在上述实施例中,采用max.poll.records参数设置kafka消费一次调用poll()返回的预设最大读取记录数。
43.在本发明实施例中,需要建立与数据库的连接,写入数据库和关闭与数据库的连接,具体实施时,使用structured streaming spark进行流式处理的sink有file sink、console sink、memory sink和foreach sink,但是前面几种对于不同类型的结构化数据和非结构化数据实现存储程序并不通用,因此本发明实施例采用了foreach sink方法,按照spark官网规范,需要实现在实现foreachwrite[t](),即open()、process()、close()这三个方法,其中:
[0044]
open()用于实现与建立与数据库的连接;
[0045]
process()用于实现写入数据库;
[0046]
close()用于实现关闭与数据库的连接。
[0047]
在实现以上三个方式时,减少建立与关闭数据库连接的次数,因此,在本发明实施例中,若在第一预设时长内,首次从kafka中读取数据时,建立与数据库的连接,调用open(),不需要在每条数据都进行一次建立与数据库的连接。
[0048]
在process()对数据写入的时候,先对获得的数据进行汇总,在汇总的数据达到预设规模后,做一个批次batch提交,避免单条写入,提高写入数据库的效率。
[0049]
同样地,在第二预设时长内从kafka读取不到数据时,关闭与数据库的连接,也是为了避免长时间占用数据库。
[0050]
通过上述步骤,可提升structured streaming spark对非结构化数据存储性能。
[0051]
图2为本发明实施例中spark流文件存储方法的详细流程图,如图2所示,包括:
interface)503和通信总线504;
[0078]
其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
[0079]
所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的spark流文件存储方法中的全部步骤。
[0080]
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的spark流文件存储方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的spark流文件存储方法的全部步骤。
[0081]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0082]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0083]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0084]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0085]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献