基于数据湖的数据读写方法、数据读写装置以及存储介质制造方法及图纸

技术编号:38372773 阅读:7 留言:0更新日期:2023-08-05 17:35
本申请公开了一种基于数据湖的数据读写方法、数据读写装置以及计算机存储介质,该数据读写方法包括:获取记录数据,并获取记录数据的主键;读取数据湖中所有文件组的基础文件的第一主键列表;判断记录数据的主键是否存在于任意一个基础文件的第一主键列表中;若否,读取数据湖中所有文件组的日志文件的第二主键列表;判断记录数据的主键是否存在于任意一个日志文件的第二主键列表;若是,将记录数据写入对应存在记录数据的主键的第二主键列表的日志文件。本申请的数据读写方法能够通过更改日志文件格式,赋予了日志文件中记录的主键可被索引的能力,新增记录支持写入日志文件,减少数据摄取时IO开销,加速数据湖在摄取新数据时的摄取速度。据时的摄取速度。据时的摄取速度。

【技术实现步骤摘要】
基于数据湖的数据读写方法、数据读写装置以及存储介质


[0001]本申请涉及数据查询
,特别是涉及一种基于数据湖的数据读写方法、数据读写装置以及计算机存储介质。

技术介绍

[0002]数据湖在现代大数据存储体系中扮演着重要角色。它可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。这些数据从不同的数据源,通过数据湖源源不断地存储到DFS(Distributed file system,分布式文件系统)中。Hudi作为一种数据湖存储系统,为DFS带来了数据快速摄取与删除地能力。
[0003]然而,目前的索引信息只能存储在基础文件中,在表格式为MOR表时,对于一条新增的记录,不能将这条记录追加到日志文件中,而是要重写整个基础文件,存在更高的IO开销和写放大的缺点,会使得数据摄取速度变慢,同时会产生更多的文件占用更多的存储空间。

技术实现思路

[0004]本申请提供一种基于数据湖的数据读写方法、数据读写装置以及计算机存储介质。
[0005]本申请采用的一个技术方案是提供一种基于数据湖的数据读写方法,所述数据读写方法包括:
[0006]获取记录数据,并获取所述记录数据的主键;
[0007]读取所述数据湖中所有文件组的基础文件的第一主键列表;
[0008]判断所述记录数据的主键是否存在于任意一个基础文件的第一主键列表中;
[0009]若否,读取所述数据湖中所有文件组的日志文件的第二主键列表;
[0010]判断所述记录数据的主键是否存在于任意一个日志文件的第二主键列表;
[0011]若是,将所述记录数据写入对应存在所述记录数据的主键的第二主键列表的日志文件。
[0012]其中,所述数据读写方法,还包括:
[0013]在所述记录数据的主键存在于任意一个基础文件的第一主键列表中时,将所述记录数据写入对应基础文件所在文件组的日志文件;
[0014]或者,在所述记录数据的主键不存在于任意一个基础文件的第一主键列表中,且不存在于任意一个日志文件的第二主键列表中时,将所述记录数据写入所述数据湖中基础文件最小的文件组的日志文件。
[0015]其中,所述判断所述记录数据的主键是否存在于任意一个日志文件的第二主键列表,包括:
[0016]获取每一日志文件的主键值范围;
[0017]基于所述记录数据的主键的数值获取符合主键数值条件的第一日志文件,其中,
所述主键数值条件为所述记录数据的主键的数值在所述第一日志文件的主键值范围内;
[0018]判断所述记录数据的主键是否存在于任意一个第一日志文件的第二主键列表。
[0019]其中,所述判断所述记录数据的主键是否存在于任意一个第一日志文件的第二主键列表,包括:
[0020]获取每一第一日志文件的预设的布隆过滤器;
[0021]基于所述记录数据的主键获取符合过滤条件的第二日志文件,其中,所述过滤条件为所述记录数据的主键在所述第二日志文件中布隆过滤器的输出为可能存在;
[0022]判断所述记录数据的主键是否存在于任意一个第二日志文件的第二主键列表。
[0023]其中,所述将所述记录数据写入对应存在所述记录数据的主键的第二主键列表的日志文件,包括:
[0024]在对应存在所述记录数据的主键的第二主键列表的日志文件的末尾写入当前数据块,用于存储所述记录数据;
[0025]根据所述记录数据的主键设置所述当前数据块的页脚信息,其中,所述页脚信息包括布隆过滤器和当前日志文件的主键列表。
[0026]其中,所述根据所述记录数据的主键设置所述当前数据块的页脚信息,包括:
[0027]获取在所述当前日志文件中当前数据块的上一个数据块的页脚信息;
[0028]利用所述当前数据块的主键更新所述上一个数据块的页脚信息中的主键列表,以生成所述当前数据块的页脚信息。
[0029]其中,所述利用所述当前数据块的主键更新所述上一个数据块的页脚信息中的主键列表,以生成所述当前数据块的页脚信息,包括:
[0030]获取上一个数据块的页脚信息;
[0031]在所述上一个数据块的页脚信息不存在或为空时,获取当前日志文件的所有数据块,并提取所述所有数据块的主键;
[0032]根据所述所有数据块的主键和所述当前数据块的主键生成所述当前日志的主键列表,并根据所述当前日志的主键列表生成布隆过滤器;
[0033]按照所述当前日志的主键列表和布隆过滤器生成所述当前数据块的页脚信息。
[0034]其中,所述数据读写方法,还包括:
[0035]按照预设周期将所述所有文件组的日志文件的记录数据压缩到所属的基础文件。
[0036]本申请采用的另一个技术方案是提供一种数据读写装置,所述数据读写装置包括存储器以及与所述存储器耦接的处理器;
[0037]其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如上述的数据读写方法。
[0038]本申请采用的另一个技术方案是提供一种计算机存储介质,所述计算机存储介质用于存储程序数据,所述程序数据在被计算机执行时,用以实现如上述的数据读写方法。
[0039]本申请的有益效果是:数据读写装置获取记录数据,并获取记录数据的主键;读取数据湖中所有文件组的基础文件的第一主键列表;判断记录数据的主键是否存在于任意一个基础文件的第一主键列表中;若否,读取数据湖中所有文件组的日志文件的第二主键列表;判断记录数据的主键是否存在于任意一个日志文件的第二主键列表;若是,将记录数据写入对应存在记录数据的主键的第二主键列表的日志文件。本申请的数据读写方法能够通
过更改日志文件格式,赋予了日志文件中记录的主键可被索引的能力,使得新增记录时无需重写基础文件,降低数据摄取时存储空间的占用,新增记录支持写入日志文件,减少数据摄取时IO开销,加速数据湖在摄取新数据时的摄取速度。
附图说明
[0040]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]图1是本申请提供的数据读写方法一实施例的流程示意图;
[0042]图2是本申请提供的数据读写方法总流程的示意图;
[0043]图3是本申请提供的数据湖中文件组的结构示意图;
[0044]图4是图1所示数据读写方法步骤S15的具体子步骤的流程示意图;
[0045]图5是图1所示数据读写方法步骤S16的具体子步骤的流程示意图;
[0046]图6是本申请提供的数据读写装置一实施例的结构示意图;
[0047]图7是本申请提供的计算机存储介质一实施例的结构示意图。
具体实施方式
[0048]下面将结合本申请实施例中的附图,对本申本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于数据湖的数据读写方法,其特征在于,所述数据读写方法包括:获取记录数据,并获取所述记录数据的主键;读取所述数据湖中所有文件组的基础文件的第一主键列表;判断所述记录数据的主键是否存在于任意一个基础文件的第一主键列表中;若否,读取所述数据湖中所有文件组的日志文件的第二主键列表;判断所述记录数据的主键是否存在于任意一个日志文件的第二主键列表;若是,将所述记录数据写入对应存在所述记录数据的主键的第二主键列表的日志文件。2.根据权利要求1所述的数据读写方法,其特征在于,所述数据读写方法,还包括:在所述记录数据的主键存在于任意一个基础文件的第一主键列表中时,将所述记录数据写入对应基础文件所在文件组的日志文件;或者,在所述记录数据的主键不存在于任意一个基础文件的第一主键列表中,且不存在于任意一个日志文件的第二主键列表中时,将所述记录数据写入所述数据湖中基础文件最小的文件组的日志文件。3.根据权利要求1所述的数据读写方法,其特征在于,所述判断所述记录数据的主键是否存在于任意一个日志文件的第二主键列表,包括:获取每一日志文件的主键值范围;基于所述记录数据的主键的数值获取符合主键数值条件的第一日志文件,其中,所述主键数值条件为所述记录数据的主键的数值在所述第一日志文件的主键值范围内;判断所述记录数据的主键是否存在于任意一个第一日志文件的第二主键列表。4.根据权利要求3所述的数据读写方法,其特征在于,所述判断所述记录数据的主键是否存在于任意一个第一日志文件的第二主键列表,包括:获取每一第一日志文件的预设的布隆过滤器;基于所述记录数据的主键获取符合过滤条件的第二日志文件,其中,所述过滤条件为所述记录数据的主键在所述第二日志文件中布隆过滤器的输出为可能存在;判断所述记录数据的主键是否存在于任意一个第二日志文件的第二主键列表。5.根据权利要求1所述的数据读写方法,其...

【专利技术属性】
技术研发人员:朱子龙周明伟钱浩东
申请(专利权)人:浙江大华技术股份有限公司
类型:发明
国别省市:

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

1