CN116028504B - 一种数据湖元数据管理方法及装置 - Google Patents
一种数据湖元数据管理方法及装置 Download PDFInfo
- Publication number
- CN116028504B CN116028504B CN202310133673.3A CN202310133673A CN116028504B CN 116028504 B CN116028504 B CN 116028504B CN 202310133673 A CN202310133673 A CN 202310133673A CN 116028504 B CN116028504 B CN 116028504B
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- commit
- submitting
- submission
- 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
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据湖元数据管理方法及装置,方法包括:将数据文件提交至数据湖时,将数据文件的元数据写入预先构建的元数据提交表;将元数据提交表中对应的提交状态字段的值设置为未提交;根据数据文件对应的表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;根据数据文件的提交标识更新提交标识集合,得到最新提交标识集合;根据当前版本计算最新版本;根据最新提交标识集合和最新版本,更新分区信息表;再将提交状态字段的值修改为已提交。数据文件入湖时,通过数据文件的元数据的两阶段写入,能够保证数据文件及其元数据的一致性和正确性,中心化的元数据管理方法处理简单高效,扩展性强。
Description
技术领域
本申请实施例涉及大数据技术领域,尤其涉及一种数据湖元数据管理方法及装置。
背景技术
随着大数据技术的不断发展,数据呈现多源井喷式发展趋势,各种数据库和数据格式内容层出不穷。数据的应用场景向复杂化、多元化转变,从最初的交易场景,到分析场景,再到混合场景、复杂分析场景,以及目前的实时混合场景。用户对数据时效性的要求越来越高,通过对所有数据统一管理,能够进行实时决策、实时变现,挖掘数据价值。
传统的数据仓库在大数据导入和分析时存在时效性慢、成本高、弹性伸缩差、数据格式单一等缺点,难以满足云环境下异构海量数据实时处理与存储的要求。数据湖的出现有效地解决了以上的几个问题,能够以较低地成本存储海量不同格式的数据。然而,现有的数据湖尚未对元数据进行有效管理和维护,在数据扩展性、分布式一致性和并发控制方面存在不足。
发明内容
有鉴于此,本申请实施例的目的在于提出一种数据湖元数据管理方法及装置,以解决数据湖的元数据管理问题。
基于上述目的,本申请实施例提供了一种数据湖元数据管理方法,包括:
将数据文件提交至数据湖时,将所述数据文件的元数据写入预先构建的元数据提交表;其中,所述元数据提交表包括表标识字段、提交状态字段和提交标识字段,所述表标识字段用于记录所述元数据中包括的数据文件对应的表标识,所述提交状态字段用于记录所述数据文件是否成功提交,所述提交标识字段用于记录所述数据文件提交时生成的提交标识;
将写入的元数据对应的提交状态字段的值设置为未提交;
根据所述表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;其中,所述提交标识集合包括所有已提交的数据文件对应的提交标识;
根据所述提交标识更新所述提交标识集合,得到最新提交标识集合;
根据所述当前版本计算最新版本;
根据所述最新提交标识集合和所述最新版本,更新所述分区信息表;
将所述提交状态字段的值修改为已提交。
可选的,方法还包括:
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突;
如果不存在冲突,将各数据文件的元数据分别写入所述元数据提交表;
如果存在冲突且兼容,确定优先级较高的提交类型,将该提交类型的数据文件的元数据写入所述元数据提交表;
如果存在冲突且不兼容,输出错误提示信息。
可选的,所述提交类型包括追加操作、合并操作和拼接操作;
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突,包括:
同时提交的至少两个数据文件的提交类型均为追加操作或合并操作时,判断不存在冲突;
同时提交的至少两个数据文件的提交类型包括追加操作和合并操作时,判断不存在冲突;
同时提交的至少两个数据文件的提交类型包括合并操作和拼接操作时,判断不存在冲突。
可选的,所述提交类型包括合并操作和更新操作;
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突,包括:
同时提交的至少两个数据文件的提交类型包括合并操作和更新操作时,判断存在冲突且兼容;
如果存在冲突且兼容,确定优先级较高的提交类型,将该提交类型的数据文件的元数据写入所述元数据提交表,包括:
将更新操作的数据文件的元数据写入所述元数据提交表。
可选的,所述提交类型包括追加操作、更新操作和拼接操作;
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突,包括:
同时提交的至少两个数据文件的提交类型包括追加操作和更新操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型包括追加操作和拼接操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型包括更新操作和拼接操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型均为更新操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型均为拼接操作时,判断存在冲突且不兼容。
可选的,将数据文件提交至数据湖之前,还包括:
获取待写入数据湖的数据表;
将所述数据表的元数据写入预先构建的元数据管理表;其中,所述数据表的元数据包括所述数据表对应的表标识;
对所述数据表进行处理,生成所述数据文件;其中,所述数据文件对应的表标识为所述数据表对应的表标识。
可选的,所述数据表的元数据还包括表名:
将所述数据表的元数据写入预先构建的元数据管理表之后,还包括:
将所述数据表对应的表标识和表名,写入预先构建的元数据名称表。
可选的,所述分区信息表包括用于记录分区标识的分区标识字段,所述元数据提交表包括用于记录所述数据文件的文件标识的文件标识字段;方法还包括:
获取查询请求;其中,所述查询请求包括目标表名和目标分区标识;
根据所述目标表名查询所述元数据名称表,得到对应的目标表标识;
根据所述目标表标识和所述目标分区标识,查询所述分区信息表,得到对应的最新版本和最新提交标识集合;
从所述最新提交标识集合中提取所有提交标识;
根据各提交标识查询所述元数据提交表,得到各提交标识对应的文件标识;
发送包括各文件标识的查询响应。
可选的,将所述数据表的元数据写入预先构建的元数据管理表之后,还包括:
将所述数据表对应的表标识和所述数据表对应的数据文件在数据湖中的存储路径,写入预先构建的元数据路径表;
所述方法还包括:
获取查询请求;其中,所述查询请求包括目标存储路径和目标分区标识;
根据所述目标存储路径查询所述元数据路径表,得到对应的目标表标识。
本申请实施例还提供一种数据湖元数据管理装置,包括:
第一提交模块,用于将数据文件提交至数据湖时,将所述数据文件的元数据写入预先构建的元数据提交表;其中,所述元数据提交表包括表标识字段、提交状态字段和提交标识字段,所述表标识字段用于记录所述元数据中包括的数据文件对应的表标识,所述提交状态字段用于记录所述数据文件是否成功提交,所述提交标识字段用于记录所述数据文件提交时生成的提交标识;将写入的元数据对应的提交状态字段的值设置为未提交;
第二提交模块,用于根据所述表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;其中,所述提交标识集合用于记录所有已提交的数据文件对应的提交标识;根据所述提交标识更新所述提交标识集合,得到最新提交标识集合;根据所述当前版本计算最新版本;根据所述最新提交标识集合和所述最新版本,更新所述分区信息表;将所述提交状态字段的值修改为已提交。
从上面所述可以看出,本申请实施例提供的数据湖元数据管理方法及装置,将数据文件提交至数据湖时,将数据文件的元数据写入预先构建的元数据提交表;将元数据提交表中的提交状态字段设置为未提交;根据数据文件对应的表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;根据数据文件的提交标识更新提交标识集合,并更新当前版本,更新分区信息表,再将提交状态字段修改为已提交,最终完成数据文件及其元数据的成功入湖。通过数据文件的元数据的两阶段写入,能够保证数据文件及其元数据的分布式一致性和正确性,利用元数据提交表和分区信息表等实现中心化的元数据管理,处理简单高效,易于维护,扩展性强。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的方法流程示意图;
图2为本申请实施例的冲突检测的方法流程示意图;
图3为本申请实施例的查询方法流程示意图;
图4为本申请实施例的装置结构框图;
图5为本申请实施例的电子设备结构框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
相关技术中,数据湖是面向多数据源的存储架构,能够存储海量的不同格式的数据,数据湖可以包括多种存储系统,例如分布式文件存储系统、键值对存储系统、云存储系统等等。为实现数据湖的元数据管理,一些方式中,对于数据湖中每类存储系统所存储的数据,分别构建相应的元数据管理模块,利用各元数据管理模块分别管理相应存储系统中存储的数据的元数据,每个元数据管理模块需要分别管理与维护,实现较为复杂,可扩展性不高。
有鉴于此,本申请实施例提供一种中心化的元数据管理方法,利用元数据提交表、分区信息表等多个数据表,能够实现所有入湖数据的元数据的统一管理与维护,保证入湖数据及其元数据的分布式一致性和正确性,且处理简单高效,可扩展性较强。
以下,通过具体的实施例进一步详细说明本申请的技术方案。
如图1所示,本申请实施例提供一种数据湖元数据管理方法,包括:
S101:将数据文件提交至数据湖时,将数据文件的元数据写入预先构建的元数据提交表;
本实施例中,数据湖可以存储多种格式的数据,例如结构化数据、非结构化数据和半结构化数据,数据湖可以配置多种存储系统,利用不同的存储系统存储不同类型的数据。在获取需要存储于数据湖的数据之后,对数据进行处理得到对应的数据文件,然后将数据文件提交至数据湖,成功提交后,数据文件存储于数据湖中特定的存储位置。
为了实现入湖数据的元数据管理,当数据文件提交至数据湖时,将数据文件的元数据写入预先构建的元数据提交表中,利用元数据提交表记录本次提交的数据文件的元数据以及提交信息。
表1 元数据提交表示例
如表1所示,一些方式中,元数据提交表包括表标识字段table_id、分区值字段partition_desc、提交标识字段commit_id、数据文件的元数据字段file_ops、提交类型字段commit_op、提交状态字段committed、提交时间戳字段timestamp。其中,表标识字段用于记录元数据中包括的数据文件对应的表标识,该字段的类型为字符串;分区值字段用于记录元数据中包括的数据文件所处分区,该字段的类型为字符串;提交标识字段用于记录数据文件提交时生成的提交标识,该字段的类型为UUID;元数据字段用于记录数据文件的元数据,包括文件名、文件大小、文件的存储路径、文件修改方式(添加或删除)等,该字段的类型为字符串;提交类型字段用于记录数据文件的提交类型,在提交数据时预先设置,该字段的类型为字符串;提交状态字段用于记录数据文件是否成功提交,该字段的类型为布尔,取值可以是false或者true,false表示未提交,true表示已提交;提交时间戳字段用于记录元数据写入元数据提交表的时间点,该字段的类型为整型。
将数据文件的元数据写入元数据提交表后,将提交状态字段的值设置为未提交,表示数据文件尚未成功提交至数据湖。
S102:根据表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;
本实施例中,将数据文件的元数据写入元数据提交表后,视为第一阶段的数据提交成功,还需要进行第二阶段的数据提交。根据数据文件的元数据中的表标识查询预先构建的分区信息表,得到该表标识对应的提交标识集合和当前版本。
表2 分区信息表第一示例
如表2所示,一些方式中,元数据提交表包括表标识字段table_id、分区值字段partition_desc、版本号字段version、提交时间戳字段timestamp和提交标识集合字段snapshot。其中,表标识字段用于记录数据文件对应的表标识,该字段的类型为字符串;分区标识字段用于记录数据文件所处分区的分区标识,该字段的类型为字符串;提交时间戳字段用于记录元数据写入元数据提交表的时间点,该字段的类型为整型;提交标识集合字段用于记录表标识对应的所有已提交的数据文件的提交标识的集合,该字段的类型为字符串数组。
根据第一阶段写入元数据提交表的表标识,查询分区信息表,得到该表标识对应的当前版本以及当前版本对应的提交标识集合,该提交标识集合包括表标识在当前版本对应的所有已提交数据文件的提交标识,各提交标识按照提交顺序以数组形式保存。
S103:根据提交标识更新提交标识集合,得到最新提交标识集合;
S104:根据当前版本计算最新版本;
S105:根据最新提交标识集合和最新版本,更新分区信息表;
S106:将提交状态字段的值修改为已提交。
本实施例中,在进行第二阶段的数据提交时,从分区信息表中查询得到当前版本和提交标识集合之后,根据当前版本计算最新版本,例如,将当前版本号加1得到本次提交对应的最新版本;根据提交标识更新提交标识集合,得到最新提交标识集合,例如,将提交标识添加于提交标识集合中,作为集合中的最后一个元素;版本和提交标识集合更新之后,将最新版本和最新提交标识集合写入分区信息表中,完成分区信息表的更新。更新分区信息表之后,再将元数据提交表中的提交状态字段修改为已提交,至此,完成第一阶段和第二阶段的数据写入,数据文件及其元数据均已成功存储于元数据中。
一些实施方式中,第一阶段的元数据提交表写入和第二阶段的分区信息表写入采用同一个数据库事务执行,只有两个阶段的数据写入均成功完成后,数据文件才算是成功入湖,任何一个阶段的数据写入不成功,数据文件都无法在数据湖中成功存储,能够保证数据文件及其元数据的分布一致性和正确性,避免重复提交数据发生错误。
分区信息表能够记录历史版本和最新版本的提交id集合,如表3所示,每个版本具有唯一的版本号,记录在 version 字段中,同时,snapshot字段包含了该版本所对应的所有文件提交标识。
表3 分区信息表第二示例
本申请实施例的数据湖元数据管理方法,能够支持至少两个数据文件的并发操作控制。将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突;
如果不存在冲突,将各数据文件的元数据分别写入元数据提交表;
如果存在冲突且兼容,确定优先级较高的提交类型,将该提交类型的数据文件的元数据写入元数据提交表;
如果存在冲突且不兼容,输出错误提示信息。
结合图2所示,本实施例中,考虑存在同时提交多个数据文件的并发操作情况,为避免发生错误,需要进行冲突检测并进行相应的处理。由于数据文件的提交类型不同,不同提交类型的数据文件与已经保存的历史数据可能有关联也可能无关联,需要根据不同的提交类型进行冲突检测与判断。如果各数据文件的提交类型不存在冲突,那么各数据文件的元数据均可写入元数据提交表,而且数据文件的写入顺序不受限制;如果各数据文件的提交类型存在冲突但是不同的提交类型可以兼容,那么选取高优先级的提交类型,将其对应的数据文件的元数据写入元数据提交表中;如果各数据文件的提交类型存在冲突而且不同的提交类型不兼容,那么任何一个数据文件均不写入,并输出错误提示信息。
一些方式中,提交类型包括追加操作、合并操作、拼接操作和更新操作。其中,追加操作(append)是指在已经保存的历史数据文件基础上新增新的行数据,与历史数据文件中的数据无关联,不会对历史数据文件中的数据进行修改;合并操作(compaction)是指将多个历史数据文件合并成一个数据文件,不会对历史数据文件中的数据进行修改;拼接操作(merge)是指在历史数据文件基础上新增新的列数据,与历史数据文件中的数据无关联,不会对历史数据文件中的数据进行修改;更新操作(update)是指对历史数据文件中的数据进行修改。
表4 不同提交类型的冲突性
结合表4所示,一种情况是,如果同时提交的各数据文件的提交类型均为追加操作,由于追加操作与历史数据无关联,无论新增几行新的数据都不会出现错误,因而可以判断不存在冲突;如果同时提交的各数据文件的提交类型均为合并操作,由于合并操作与历史数据无关联,仅仅是将几个数据文件合并成一个文件,因而可以判断不存在冲突;如果同时提交的各数据文件的提交类型包括追加操作和合并操作,由于两种操作均与历史数据无关联,无论是先增加行数据还是先合并文件都不会出现数据错误,因而可以判断不存在冲突;如果同时提交的各数据文件的提交类型包括合并操作和拼接操作,由于两种操作均与历史数据无关联,无论是先增加列数据还是先合并文件都不会出现数据错误,因而可以判断不存在冲突。通过上述分析与判断,对于不存在冲突的各数据文件,可以依次将数据文件的元数据写入元数据提交表,并更新分区信息表,对于每个数据文件,均需进行两阶段的数据写入,以保证每个数据文件均可成功入湖,不存在冲突的并发写入的多个数据文件不会出现数据错误。
另一种情况是,如果同时提交的至少两个数据文件的提交类型包括合并操作和更新操作,判断存在冲突且兼容;此种情况下,由于更新操作需要对历史数据进行修改,其具有更高的优先级,因而,仅需将更新操作的数据文件的元数据写入元数据提交表即可,不再执行合并操作的数据文件的入湖。
第三种情况是,如果同时提交的至少两个数据文件的提交类型包括追加操作和更新操作,二者并发操作可能产生数据错误,因而可以判断存在冲突且不兼容;如果同时提交的至少两个数据文件的提交类型包括追加操作和拼接操作,无论是先新增行数据还是先新增列数据,都可能产生数据错误,因而可以判断存在冲突且不兼容;如果同时提交的至少两个数据文件的提交类型包括更新操作和拼接操作,二者并发操作可能产生数据错误,因而可以判断存在冲突且不兼容;如果同时提交的至少两个数据文件的提交类型均为更新操作,多个更新操作对于历史数据的修改可能相同也可能不同,二者并发操作可能产生数据错误,因而可以判断存在冲突且不兼容;如果同时提交的至少两个数据文件的提交类型均为拼接操作,多个拼接操作所新增的列数据可能相同也可能不同,二者并发操作可能产生数据错误,因而可以判断存在冲突且不兼容。对于冲突且不兼容的各数据文件,任何一个数据文件均不执行入湖,可输出错误提示信息,提示需要重新操作或者等待操作。这样,当并发写入数据时,通过按照不同提交类型之间的关系进行冲突检测,能够保证数据提交的一致性和正确性,避免出现数据错误。
一些实施例中,将数据文件提交至数据湖之前,还包括:
获取待写入数据湖的数据表;
将数据表的元数据写入预先构建的元数据管理表;其中,数据表的元数据包括数据表对应的表标识;
对数据表进行处理,生成数据文件;其中,数据文件对应的表标识为数据表对应的表标识。
本申请实施例可以实现在线数据库与数据湖的数据同步。从在线数据库获取的数据表,一方面,对数据表进行处理生成相应的数据文件,将数据文件保存于数据湖中特定的存储位置,另一方面,将数据表的元数据写入数据湖中的元数据管理表中,从而实现保存于数据湖中的数据及其元数据的分布式一致性,经过同步后,数据湖与在线数据库中的数据表保持一致。其中,数据表的元数据是数据表的数据,包括表标识、库名、表名、字段及字段类型等;首次获取数据表时,将数据表的全部数据以数据文件的形式保存于数据湖中与该数据表的表名对应的目录下,后续当数据表发生变化或者到达预定时间时,获取数据表中发生变化的增量数据,将增量数据以数据文件的形式保存于对应其表名的目录下。
一些实施方式中,为实现数据湖中元数据的管理,在数据湖初始化阶段,创建元数据命名空间表、元数据管理表、元数据路径表、元数据名称表、元数据提交表以及分区信息表,利用创建的各元数据表对入湖的数据的元数据进行存储与管理。
表5 元数据命名空间表字段及说明
表6 元数据管理表字段及说明
表7 元数据名称表字段及说明
表8 元数据路径表字段及说明
结合表6、7、8所示,从在线数据湖获取数据表后,将数据表的各元数据项对应保存于元数据管理表中,将数据表的表标识、表命名空间及表名保存于元数据名称表中,将数据表的表标识、表命名空间,以及数据表对应的数据文件在数据湖上的存储路径保存于元数据路径表中。
本申请实施例的数据湖元数据管理方法,基于所构建的各个元数据表,能够支持数据查询。如图3所示,进行数据查询时,方法包括:
获取查询请求;其中,查询请求包括目标表名和目标分区标识;
根据目标表名查询元数据名称表,得到对应的目标表标识;
根据目标表标识和目标分区标识,查询分区信息表,得到对应的最新版本和最新提交标识集合;
从最新提交标识集合中提取所有提交标识;
根据各提交标识查询元数据提交表,得到各提交标识对应的文件标识;
发送包括各文件标识的查询响应。
本实施例中,用户可输入的查询条件包括所要查询的目标表名和目标分区标识,接收到查询请求后,根据其中的目标表名查询元数据名称表,得到与目标表名对应的目标表标识,然后根据目标表标识和目标分区标识查询分区信息表,得到目标表标识和目标分区标识对应的最新版本和最新提交标识集合;之后,从最新提交标识中解析出所有的提交标识,根据各提交标识查询元数据提交表,获得各提交标识所分别对应的文件标识,然后将所有的文件标识以查询响应发送给用户。一些方式中,文件标识用于指示数据文件在数据湖中的存储位置,文件标识例如是文件名,用户获得文件名或文件名列表后,可根据文件名从数据湖中查找对应的数据文件,从而实现查询功能。
另一些实施方式中,用户可输入的查询条件还可以包括所要查询的目标存储路径和目标分区标识。接收到查询请求后,根据其中的目标存储路径查询元数据路径表,得到与目标存储路径对应的目标表标识,然后根据目标表标识和目标分区标识查询分区信息表,得到目标表标识和目标分区标识对应的最新版本和最新提交标识集合;之后,从最新提交标识中解析出所有的提交标识,根据各提交标识查询元数据提交表,获得各提交标识所分别对应的文件标识,然后将所有的文件标识以查询响应发送给用户。
本申请实施例提供的数据湖元数据管理方法,在数据湖中创建多个元数据表,利用多个元数据表实现数据湖中所有数据的元数据的中心化一致性管理,无需区分数据湖架构中所配置的存储系统。利用元数据管理表、元数据名称表和元数据路径表能够支持数据查询功能;当数据文件提交至数据湖时,通过元数据提交表和分区信息表的两阶段数据写入,能够保证入湖数据及其元数据的分布式一致性和正确性;当多个数据文件并发写入时,通过冲突检测和判断,能够保证数据正确处理,避免发生错误。中心化的元数据管理方法,处理简单高效,易于维护,可扩展性强。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
如图4所示,本申请实施例还提供一种数据湖元数据管理装置,包括:
第一提交模块,用于将数据文件提交至数据湖时,将所述数据文件的元数据写入预先构建的元数据提交表;其中,所述元数据提交表包括表标识字段、提交状态字段和提交标识字段,所述表标识字段用于记录所述元数据中包括的数据文件对应的表标识,所述提交状态字段用于记录所述数据文件是否成功提交,所述提交标识字段用于记录所述数据文件提交时生成的提交标识;将写入的元数据对应的提交状态字段的值设置为未提交;
第二提交模块,用于根据所述表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;其中,所述提交标识集合用于记录所有已提交的数据文件对应的提交标识;根据所述提交标识更新所述提交标识集合,得到最新提交标识集合;根据所述当前版本计算最新版本;根据所述最新提交标识集合和所述最新版本,更新所述分区信息表;将所述提交状态字段的值修改为已提交。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种数据湖元数据管理方法,其特征在于,包括:
将数据文件提交至数据湖时,将所述数据文件的元数据写入预先构建的元数据提交表;其中,所述元数据提交表包括表标识字段、提交状态字段和提交标识字段,所述表标识字段用于记录所述元数据中包括的数据文件对应的表标识,所述提交状态字段用于记录所述数据文件是否成功提交,所述提交标识字段用于记录所述数据文件提交时生成的提交标识;
将写入的元数据对应的提交状态字段的值设置为未提交;
根据所述表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;其中,所述提交标识集合包括所有已提交的数据文件对应的提交标识;
根据所述提交标识更新所述提交标识集合,得到最新提交标识集合;
根据所述当前版本计算最新版本;
根据所述最新提交标识集合和所述最新版本,更新所述分区信息表;
将所述提交状态字段的值修改为已提交。
2.根据权利要求1所述的方法,其特征在于,还包括:
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突;
如果不存在冲突,将各数据文件的元数据分别写入所述元数据提交表;
如果存在冲突且兼容,确定优先级较高的提交类型,将该提交类型的数据文件的元数据写入所述元数据提交表;
如果存在冲突且不兼容,输出错误提示信息。
3.根据权利要求2所述的方法,其特征在于,所述提交类型包括追加操作、合并操作和拼接操作;
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突,包括:
同时提交的至少两个数据文件的提交类型均为追加操作或合并操作时,判断不存在冲突;
同时提交的至少两个数据文件的提交类型包括追加操作和合并操作时,判断不存在冲突;
同时提交的至少两个数据文件的提交类型包括合并操作和拼接操作时,判断不存在冲突。
4.根据权利要求2所述的方法,其特征在于,所述提交类型包括合并操作和更新操作;
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突,包括:
同时提交的至少两个数据文件的提交类型包括合并操作和更新操作时,判断存在冲突且兼容;
如果存在冲突且兼容,确定优先级较高的提交类型,将该提交类型的数据文件的元数据写入所述元数据提交表,包括:
将更新操作的数据文件的元数据写入所述元数据提交表。
5.根据权利要求2所述的方法,其特征在于,所述提交类型包括追加操作、更新操作和拼接操作;
将至少两个数据文件同时提交至数据湖时,根据设置的各数据文件的提交类型,判断是否存在冲突,包括:
同时提交的至少两个数据文件的提交类型包括追加操作和更新操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型包括追加操作和拼接操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型包括更新操作和拼接操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型均为更新操作时,判断存在冲突且不兼容;
同时提交的至少两个数据文件的提交类型均为拼接操作时,判断存在冲突且不兼容。
6.根据权利要求1-5任意一项所述的方法,其特征在于,将数据文件提交至数据湖之前,还包括:
获取待写入数据湖的数据表;
将所述数据表的元数据写入预先构建的元数据管理表;其中,所述数据表的元数据包括所述数据表对应的表标识;
对所述数据表进行处理,生成所述数据文件;其中,所述数据文件对应的表标识为所述数据表对应的表标识。
7.根据权利要求6所述的方法,其特征在于,所述数据表的元数据还包括表名:
将所述数据表的元数据写入预先构建的元数据管理表之后,还包括:
将所述数据表对应的表标识和表名,写入预先构建的元数据名称表。
8.根据权利要求7所述的方法,其特征在于,所述分区信息表包括用于记录分区标识的分区标识字段,所述元数据提交表包括用于记录所述数据文件的文件标识的文件标识字段;方法还包括:
获取查询请求;其中,所述查询请求包括目标表名和目标分区标识;
根据所述目标表名查询所述元数据名称表,得到对应的目标表标识;
根据所述目标表标识和所述目标分区标识,查询所述分区信息表,得到对应的最新版本和最新提交标识集合;
从所述最新提交标识集合中提取所有提交标识;
根据各提交标识查询所述元数据提交表,得到各提交标识对应的文件标识;
发送包括各文件标识的查询响应。
9.根据权利要求6所述的方法,其特征在于,将所述数据表的元数据写入预先构建的元数据管理表之后,还包括:
将所述数据表对应的表标识和所述数据表对应的数据文件在数据湖中的存储路径,写入预先构建的元数据路径表;
所述方法还包括:
获取查询请求;其中,所述查询请求包括目标存储路径和目标分区标识;
根据所述目标存储路径查询所述元数据路径表,得到对应的目标表标识。
10.一种数据湖元数据管理装置,其特征在于,包括:
第一提交模块,用于将数据文件提交至数据湖时,将所述数据文件的元数据写入预先构建的元数据提交表;其中,所述元数据提交表包括表标识字段、提交状态字段和提交标识字段,所述表标识字段用于记录所述元数据中包括的数据文件对应的表标识,所述提交状态字段用于记录所述数据文件是否成功提交,所述提交标识字段用于记录所述数据文件提交时生成的提交标识;将写入的元数据对应的提交状态字段的值设置为未提交;
第二提交模块,用于根据所述表标识查询预先构建的分区信息表,得到对应的提交标识集合和当前版本;其中,所述提交标识集合用于记录所有已提交的数据文件对应的提交标识;根据所述提交标识更新所述提交标识集合,得到最新提交标识集合;根据所述当前版本计算最新版本;根据所述最新提交标识集合和所述最新版本,更新所述分区信息表;将所述提交状态字段的值修改为已提交。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310133673.3A CN116028504B (zh) | 2023-02-20 | 2023-02-20 | 一种数据湖元数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310133673.3A CN116028504B (zh) | 2023-02-20 | 2023-02-20 | 一种数据湖元数据管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028504A CN116028504A (zh) | 2023-04-28 |
CN116028504B true CN116028504B (zh) | 2023-05-30 |
Family
ID=86074057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310133673.3A Active CN116028504B (zh) | 2023-02-20 | 2023-02-20 | 一种数据湖元数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028504B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113761294A (zh) * | 2021-09-10 | 2021-12-07 | 北京火山引擎科技有限公司 | 数据管理方法、装置、存储介质以及电子设备 |
CN114265814A (zh) * | 2022-03-01 | 2022-04-01 | 天津安锐捷技术有限公司 | 一种基于对象存储的数据湖文件系统 |
CN114691307A (zh) * | 2022-03-16 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 事务处理方法及计算机系统 |
CN115185955A (zh) * | 2022-03-31 | 2022-10-14 | 阿里云计算有限公司 | 一种数据湖数据处理方法和系统 |
CN115422273A (zh) * | 2022-08-31 | 2022-12-02 | 中国工商银行股份有限公司 | 数据湖元数据处理方法、装置、电子设备、介质及产品 |
CN115658683A (zh) * | 2022-09-27 | 2023-01-31 | 中国农业银行股份有限公司 | 元数据处理方法、装置、设备、介质和程序产品 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201615748D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for importing data into a data repository |
US11119980B2 (en) * | 2018-11-30 | 2021-09-14 | International Business Machines Corporation | Self-learning operational database management |
-
2023
- 2023-02-20 CN CN202310133673.3A patent/CN116028504B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113761294A (zh) * | 2021-09-10 | 2021-12-07 | 北京火山引擎科技有限公司 | 数据管理方法、装置、存储介质以及电子设备 |
CN114265814A (zh) * | 2022-03-01 | 2022-04-01 | 天津安锐捷技术有限公司 | 一种基于对象存储的数据湖文件系统 |
CN114691307A (zh) * | 2022-03-16 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 事务处理方法及计算机系统 |
CN115185955A (zh) * | 2022-03-31 | 2022-10-14 | 阿里云计算有限公司 | 一种数据湖数据处理方法和系统 |
CN115422273A (zh) * | 2022-08-31 | 2022-12-02 | 中国工商银行股份有限公司 | 数据湖元数据处理方法、装置、电子设备、介质及产品 |
CN115658683A (zh) * | 2022-09-27 | 2023-01-31 | 中国农业银行股份有限公司 | 元数据处理方法、装置、设备、介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN116028504A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106970936B (zh) | 数据处理方法及装置、数据查询方法及装置 | |
US10176238B2 (en) | Integrating object-based data integration tool with a version control system in centralized and decentralized environments | |
CN107526777B (zh) | 一种基于版本号对文件进行处理的方法及设备 | |
US9483516B2 (en) | Multi-version concurrency control across row store and column store | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
US20220067024A1 (en) | Facilitating performance of database operations using microservices | |
CN109739828B (zh) | 一种数据处理方法、设备及计算机可读存储介质 | |
CN113485980A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110515909B (zh) | 文件存储方法、装置、电子设备及计算机存储介质 | |
CN116028504B (zh) | 一种数据湖元数据管理方法及装置 | |
US11023445B2 (en) | Optimistic concurrency for collaborative applications | |
CN115113989B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN116010345A (zh) | 一种实现流批一体数据湖的表服务方案的方法、装置及设备 | |
CN116150236A (zh) | 数据同步方法及装置、电子设备、计算机可读存储介质 | |
CN115292313A (zh) | 一种伪列实现方法、装置、电子设备及存储介质 | |
CN114942953A (zh) | 跨系统数据更新查询方法及相关设备 | |
JP7381290B2 (ja) | 計算機システム及びデータの管理方法 | |
CN112463896A (zh) | 档案编目数据处理方法、装置、计算设备及存储介质 | |
CN112288586A (zh) | 基于HBase的保险行业数据整合方法及相关设备 | |
CN115840786B (zh) | 一种数据湖数据同步方法及装置 | |
CN113760860B (zh) | 一种数据读取方法和装置 | |
CN111813801B (zh) | 一种数据检索方法及装置 | |
CN113515504B (zh) | 数据管理方法、装置、电子设备以及存储介质 | |
CN115858183B (zh) | 异步并行i/o请求的进程间联合分析方法、装置及设备 | |
CN111984645B (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 |