CN116595096A - 一种基于湖仓一体的元数据同步方法、装置、设备及介质 - Google Patents

一种基于湖仓一体的元数据同步方法、装置、设备及介质 Download PDF

Info

Publication number
CN116595096A
CN116595096A CN202310542790.5A CN202310542790A CN116595096A CN 116595096 A CN116595096 A CN 116595096A CN 202310542790 A CN202310542790 A CN 202310542790A CN 116595096 A CN116595096 A CN 116595096A
Authority
CN
China
Prior art keywords
metadata
data
data source
lake
changed
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
CN202310542790.5A
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.)
Hangzhou Dt Dream Technology Co Ltd
Original Assignee
Hangzhou Dt Dream 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 Hangzhou Dt Dream Technology Co Ltd filed Critical Hangzhou Dt Dream Technology Co Ltd
Priority to CN202310542790.5A priority Critical patent/CN116595096A/zh
Publication of CN116595096A publication Critical patent/CN116595096A/zh
Pending legal-status Critical Current

Links

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually

Landscapes

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

Abstract

本申请提供一种基于湖仓一体的元数据同步方法、装置、设备及介质。所述方法包括:获取数据源表的元数据信息;判断所述数据源表的元数据信息是否发生改变;在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。

Description

一种基于湖仓一体的元数据同步方法、装置、设备及介质
技术领域
本申请涉及大数据领域,尤其涉及一种基于湖仓一体的元数据同步方法、装置、设备及介质。
背景技术
在大数据领域中,数据仓库采用结构化方式存储数据,擅长对存量数据的分析和处理;数据湖则可以灵活地集中存储、更新、管理各类结构化、半结构化和非结构化数据。而数据仓库和数据湖结合的存储系统,则既可以灵活地存储各类数据,也可以方便地对其进行分析处理。
当上述存储系统中的数据对应的源端业务发生更改时,通常需要对上述存储系统中的数据进行同步。
发明内容
有鉴于此,本说明书提供以下方法、装置、设备及介质。
在本申请的第一方面,提供一种基于湖仓一体的元数据同步方法,所述方法包括:
获取数据源表的元数据信息;
判断所述数据源表的元数据信息是否发生改变;
在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
在本申请的第二方面,提供了一种基于湖仓一体的元数据同步装置,所述装置应用于数据湖和数据仓库结合的存储系统,所述存储系统中存储了与数据源表对应的数据湖表和数据仓库表;所述装置包括:
获取单元,用于获取数据源表的元数据信息;
判断单元,用于判断所述数据源表的元数据信息是否发生改变;
同步单元,用于在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
在本申请的第三方面,提供了一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行以下方法:
获取数据源表的元数据信息;
判断所述数据源表的元数据信息是否发生改变;
在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
在本申请的第四方面,提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现以下方法:
获取数据源表的元数据信息;
判断所述数据源表的元数据信息是否发生改变;
在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
本申请通过在湖仓中存储的数据湖表和数据仓表对应的数据源表的元数据信息发生变化时,同步更新数据湖表的元数据和数据仓表的元数据,以保持湖仓中的数据湖表和数据仓表能够感知到数据源表结构的变化,并始终保持数据湖表和数据仓表的元数据,即表结构始终保持同步,使得针对湖仓中表的查询分析始终能够统一。
附图说明
图1是一示例性的实施例示出的一种基于湖仓一体的元数据同步方法的流程图;
图2是一示例性的实施例示出的一种存储系统的数据写入过程的示意图;
图3是一示例性的实施例示出的一种基于湖仓一体的元数据同步方法的时序示意图;
图4是一示例性的实施例示出的一种事务执行的示意图;
图5是一示例性的实施例示出的一种基于湖仓一体的元数据同步装置所在电子设备的硬件结构图;
图6是一示例性的实施例示出的一种基于湖仓一体的元数据同步装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对本说明书实施例涉及的家具溯源的相关技术,进行简要说明。
数据仓库(Data Warehouse,可简写为DW或DWH),是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,可以支持管理决策和信息的全局共享,主要用于历史性、综合性和深层次数据分析。
数据湖(Data Lake)是一个存储各种原始数据的大型数据集合,其中的数据可供存取、处理、分析及传输。数据湖是以其自然格式存储的数据的系统或存储库,通常是对象blob(Binary Large Object,二进制类型的大对象)或文件。数据湖通常是企业所有数据的单一存储,包括源系统数据的原始副本,以及用于报告、可视化、分析和机器学习等任务的转换数据。数据湖可以包括来自关系数据库(行和列)的结构化数据,半结构化数据(CSV,日志,XML,JSON等),非结构化数据(电子邮件,文档,PDF等)和二进制数据(图像,音频,视频等)。
数据湖和数据仓库结合的存储系统,也称基于湖仓一体的存储系统,或湖仓,在数据仓库的基础上增加数据湖的支持,以同时具备数据湖的灵活性和数据仓库的数据分析处理能力。
上述数据湖与数据仓库结合的存储系统中,仍保留了由数据湖表构成的数据湖,和由数据仓库表构成的数据湖。
其中,数据仓库由其对应的数据仓库管理服务进行管理,数据湖由其对应的数据湖管理服务进行管理。
通常,上述数据湖和数据仓库结合的存储系统中,对于从源端的数据源表进入该存储系统的数据,经过相应的加工后,同时以数据湖表和数据仓库表的形式在该存储系统中进行存储,并统一进行结构化的管理,以方便后续对数据的分析和处理。
请参见图1,图1是一示例性的实施例示出的一种基于湖仓一体的元数据同步方法的流程图。
上述湖仓一体架构的存储系统可以从多样化的来源端,获取多样化的数据源表,经由数据加工之后,可以将数据源表对应的数据以对应的数据湖表和数据仓库表的形式分别存储到上述存储系统中的数据湖部分和数据仓库部分中。
通常,存储系统通过数据表的元数据对数据表进行管理、分析及处理。
元数据是用于描述数据的数据,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。通常,通过不同的方式针对同一数据构建的元数据并不相同。而表的元数据,通常可以用来表示表的结构,例如字段的数量,各字段名,各字段数据的格式等。
对应的数据湖表和数据仓库表,由于要进行统一管理,方便进行统一的数据分析和处理。因此,对应的数据湖表和数据仓库表,其元数据应当是一致的。
具体的,可以采用统一的元数据管理服务,针对对应的数据湖表和数据仓库表进行元数据管理。
如图1所示,当源数据表进入上述存储系统,经由数据加工处理后,可以写入数据湖表,并通过上述元数据管理服务,生成对应的元数据信息,将上述元数据信息同步到数据仓库,并生成对应的数据仓库表。
其他计算引擎和分析引擎等,可以通过该元数据管理服务,访问存储系统中的数据湖表和数据仓库表。
对于已经进入上述存储系统中的数据,当数据源表中的数据发生改变时,通常可以统一将其对应的数据湖表和数据仓库表中的数据进行相应的变更。
然而,如果源端的数据源表,因对应的业务发生变化等原因,其数据结构发生变更时,由于上述数据系统采用了结构化的统一管理,其中的数据湖表和数据仓库表通常无法自动进行变更。
有鉴于此,本说明书旨在提出一种基于湖仓一体的元数据同步方法,通过根据源端的数据源表的元数据信息变化,来自动对上述存储系统中的数据湖表和数据仓库表进行同步变更。
在实现时,可以判断数据源表的元数据信息是否发生改变;当数据源表的元数据信息发生改变,同步将上述数据源表对应的数据湖表和数据仓库表的元数据进行更新,实现了数据湖表与数仓表可以根据数据源表结构的变更同步进行更新,保持了对应的数据湖表和数据仓库表元数据与结构的一致,使得上述存储系统针对数据湖表和数据仓库表的查询分析能够统一。
下面通过具体实施例,并结合具体的应用场景对本申请进行描述。
请参见图2,图2是一示例性的实施例示出的一种基于湖仓一体的元数据同步方法的流程图。
所述方法应用于数据湖和数据仓库结合的存储系统,所述存储系统中存储了与数据源表对应的数据湖表和数据仓库表。
上述方法可以执行以下步骤:
步骤202:获取数据源表的元数据信息;
上述数据源表可以是来自多样化的源端的数据源表,例如可以是来自消息流的数据源表,来自关系数据库的数据源表,来自数据仓库的数据源表等,本说明书不对此进行具体限定。
数据表的元数据是用于描述数据表的数据,通常可以包含表名、表的大小、表的记录行数、表的字符集、表的字段、表的索引、表的描述、字段的类型、字段的精度、字段的描述等信息。
数据源表通常与业务直接相关,业务发生改变时,数据源表的结构或内容通常也会发生相应的改变。
当数据表的结构发生变更时,其元数据信息也会发生响应的改变;因此,元数据信息的改变,可以用来表征数据表的结构发生了改变。
可以持续获取数据源表的元数据信息,来确认数据源表的结构是否发生改变。
步骤204:判断所述数据源表的元数据信息是否发生改变;
获取到数据源表的元数据信息后,可以将其与上一次获取到的元数据信息进行比对,来判断其元数据信息是否发生改变。
数据源表的元数据信息改变,可以反映其表结构发生了改变。
步骤206:在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
当根据获取到的数据源表的元数据信息,判断出数据源表的元数据发生改变的情形下,可以确认数据源表的表结构发生了变化,需要将数据源表发生的变化更新到上述存储系统中的数据湖表和数据仓库表中。
因此,需要同步地更新数据源表对应的数据湖表和数据仓库表的元数据。
上述实施例,通过在湖仓中存储的数据湖表和数据仓表对应的数据源表的元数据信息发生变化时,同步更新数据湖表的元数据和数据仓表的元数据,以保持湖仓中的数据湖表和数据仓表能够感知到数据源表结构的变化,并始终保持数据湖表和数据仓表的元数据,即表结构始终保持同步,使得针对湖仓中表的查询分析始终能够统一。
在本说明示出的一个示例性的实施例中,所述获取数据源表的元数据信息,包括:
通过预先部署的元数据同步服务,周期性获取所述数据源表的元数据信息。
所述判断所述数据源表的元数据信息是否发生改变,包括:
将获取的所述元数据信息,与已保存的所述数据源表的元数据信息进行比对,
在比对不一致的情形下,确定所述元数据信息发生改变。
请参见图3,图3是一示例性的实施例示出的一种基于湖仓一体的元数据同步方法的时序示意图。
具体的,可以预先部署一个元数据同步服务,该元数据同步服务可以根据预设的周期,从源端获取源数据表的元数据信息,并将获取到的元数据信息进行保存。
每次获取到源数据表的元数据信息后,与保存的上一次获取到的元数据信息进行比对,如果与上一次获取到的元数据不同,则可以确认数据源表的元数据发生了改变,即源数据表的结构发生了改变,需要将对应的数据湖表和数据仓库表的元数据也进行对应的更改。
上述实施例具体提出了一种获取和判断数据源表的元数据是否发生变更的方法。
在本说明书示出的一个示例性的实施例中,所述在所述数据源表的溯源数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据,包括:
在所述数据源表的溯源数据信息发生改变的情形下,通过所述元数据同步服务向预设的消息中间件,发送元数据变更消息;其中,所述元数据变更消息包含改变后的所述元数据;
通过预设的元数据同步服务从所述消息中间件,获取所述元数据变更消息;
响应于所述元数据管理服务接收到所述元数据变更信息,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
当上述元数据管理服务通过比对获取到的元数据信息和已存储的元数据信息不同,即数据源表的元数据信息发生改变时,可以生成元数据变更消息,并将上述元数据变更消息发送给预设的元数据管理服务,并由上述元数据管理服务对元数据变更消息对应的数据湖表和数据仓库表进行元数据的同步更新。
具体的,可以通过消息中间件发送上述元数据信息变更消息。
元数据同步服务生成元数据变更消息后,可以将元数据变更消息发送到消息中间件对应的消息主题中。
而元数据管理服务则可以监听消息中间件中的上述消息主题,以实时地获取到上述元数据信息变更消息,以对数据湖表和数据仓库表的元数据进行更新。
对于消息中间件的具体种类,本说明书不进行具体限制,例如,可以根据实际需要选择RabbitMQ、Kafka、RocketMQ等常用的消息中间件。
使用消息中间件可以便利地在相同平台或者不同平台间实时地进行大量消息的传输。例如,上述元数据同步服务可以部署在数据源表所在的源端,而元数据管理服务可以部署在湖仓中,两者不在同一系统中,使用其他通信手段可能需要进行复杂的协议和信道的构建,而通过消息中间件,可以简单快捷地实现大量上述元数据信息变更消息的实时传输。
在本说明书示出的一个示意性的实施例中,所述消息中间件包含高优先级的消息队列、中优先级的消息队列和低优先级的消息队列;
所述元数据变更消息包含所述源数据表对应的预设的优先级;
所述通过所述元数据同步服务向预设的消息中间件,发送元数据变更消息,包括:
通过所述元数据同步服务向预设的消息中间件中,与所述源数据表对应的预设的优先级对应的消息队列,发送元数据变更信息;
所述通过预设的元数据管理服务从所述消息中间件,获取所述元数据变更消息,包括:
通过预设的元数据管理服务,依次从所述消息中间件包含的高优先级的消息队列、中优先级的消息队列和低优先级的消息队列中获取所述元数据变更消息。
在消息中间件中,消息以消息队列的形式进行发送,进入消息中间件的消息会依次进入消息队列,并依次进行发送。
当进入消息中间件的消息数量很大时,消息可能会在消息队列中进行排队,无法及时发送。
在本说明的实施例中,数仓可能存储了非常大量的数据表,对应了非常大量的数据源表。当大量数据源表的元数据在短时间内都发生了改变时,元数据同步服务会在短时间内生成大量的元数据信息变更消息,此时,有些元数据变更消息到达元数据管理服务所需的时间可能较长,存在较大的延时。
由于涉及的业务不同,不同的数据表对数据实时性的要求也是不同的,因此,为了避免对数据实时性要求高的数据表不能及时进行同步,可以对不同的数据表预先设置不同的优先级,使其对应的数据源表的元数据发生表更时,其元数据变更消息可以优先通过消息中间件传输到元数据管理服务。
具体的,可以在上述消息中间件中设置多个消息队列,例如高优先级的消息队列、中优先级的消息队列和低优先级的消息队列。
相应的,根据对数据实时性的要求不同,可以预先针对各个数据源表也设置不同的优先级,例如高优先级、中优先级和低优先级。
不同优先级的数据源表分别对应不同的消息队列。例如,当高优先级的数据源表的元数据发生变更时,其对应的元数据信息变更消息进入高优先级的消息队列;当中优先级的数据源表的元数据发生变更时,其对应的元数据信息变更消息进入中优先级的消息队列;当低优先级的数据源表的元数据发生变更时,其对应的元数据信息变更消息进入低优先级的消息队列。
相应的,接收消息的元数据管理服务在接收数据中间件中的消息时,会优先从高优先级的消息队列中接收消息,直到高优先级的消息队列中的消息接收完毕后,再依次从中优先级的消息队列,和低优先级的消息队列中接收消息。
以上实施例,通过对不同数据源表设置不同优先级,在消息中间件设置不同优先级的消息队列,并使元数据管理服务按照优先级顺序从各个消息队列中获取消息,实现了优先获取数据实时性要求元数据变更消息,以优先变更对应的数据湖表和数据仓库表的元数据,从而在高并发的情况下优先保证其数据实时性。
所述根据改变后的所述元数据,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据,包括:
生成事务;所述事务包括第一更新操作与第二更新操作;所述第一更新操作包括根据改变后的所述元数据,更新与所述数据源表对应的数据湖表的元数据,所述第二更新操作包括根据改变后的所述元数据,更新与所述数据源表对应的数据仓库表的元数据;
执行所述事务;
在所述事务执行成功的情形下,确定完成同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
在上述湖仓中,由于需要对数据湖表和数据仓库表进行统一的管理,并对其中的数据进行一致的分析和处理,需要保持数据湖表和数据仓库表的强一致。
因此,对于数据湖表和数据仓库表的变更,应当同步进行执行,即数据湖表和数据仓库表都完成变更,才能将数据湖表和数据仓库表的变更应用到上述湖仓一体的存储系统中。
如果数据仓库表和数据湖表中任意一项的变更失败,则另一项变更即使成功,也不能将变更应用到上述存储体系中,以防止出现对应的数据湖表和数据仓表的结构不一致的问题。
具体的,可以通过打包事务的方式,来实现数据湖表和数据仓库表的元数据变更的一致性。
上述元数据管理服务可以生成一个事务来实现元数据的同步变更。
该事务可以用于根据数据源表更新后的元数据信息,同步更新数据湖表和数据仓库表的元数据。
该事务包括了更新数据湖表的元数据的第一更新操作,和用于更新数据仓库表的第二更新操作。
当该事务执行成功时,可以确定与元数据信息改变后的数据源表对应的数据湖表和数据仓库表的元数据已经同步更新完成,数据湖表和数据仓库表的表结构一致。
在本说明示出的一个示意性的实施例中,所述执行所述事务,包括:
执行所述事务包括的所述第一更新操作与所述第二更新操作;
在所述第一更新操作和所述第二更新操作均执行成功的情形下,确定所述事务执行成功;
在所述第一更新操作或所述第二更新操作执行失败的情形下,确定所述事务执行失败,并且回滚另一更新操作;
在所述第一更新操作和所述第二更新操作执行失败的情形下,确定所述事务执行失败。
如图4所示,图4是根据本说明实施例的一种事务执行的示意图。
只有当第一更新操作和第二更新操作都执行成功的情况下,上述事务才能确认执行成功。
当第一更新操作和第二更新操作中任意一项或两项执行失败时,上述事务均执行失败。
并且,为了保证数据湖表和数据仓库表元数据的一致性,当第一更新操作和第二更新操作中任意一项执行失败,另一项执行成功时,执行成功的操作要进行回滚,恢复到事务未执行时的状态。
以上实施例通过事务的形式实现了数据湖表和数据仓库表元数据的变更的同步性,保证了数据湖表和数据仓库表元数据和表结构的强一致,更好地保证了针对湖仓中数据表的查询分析始终能够统一。
在本说明示出第一个示例性的实施例中,湖仓部署了数据仓库管理服务和数据湖管理服务;
通过预设的数据湖管理服务,执行所述第一更新操作;
通过预设的数据仓库管理服务,执行所述第二更新操作。
具体的,可以分别通过预设的数据湖管理服务,对数据湖表的元数据进行更新;通过预设的数据仓库管理服务,对数据仓库表的元数据进行更新。
对于本说明书示出的各实施例,上述数据湖与数据仓库结合的存储系统中,不对其中的数据仓库和数据湖的具体架构进行具体限定。例如,可以采用Hive,SparkSQL等架构的数据仓库,可以采用Hudi、Iceberg、Delta Lake等架构的数据湖等。上述数据湖与数据仓库结合的存储系统可以采用例如Hive与Hudi结合的架构,Hive和Iceberg结合的架构,SparkSQL和Delta Lake结合的架构等,本说明书不对此进行具体限定。
在本说明示出的一个示例性的实施例中,上述数据湖与数据仓库结合的存储系统采用Hive与Hudi结合的架构。
在本说明示出的一个示例性的实施例中,上述数据湖与数据仓库结合的存储系统中,数据湖包括基于Hudi的数据湖,对应的,数据湖表包括Hudi表,数据湖管理服务包括Spark APP;
数据仓库包括基于Hive的数据仓库,数据仓库表包括Hive表,对应的,数据仓库管理服务包括Hive Meta Service。
其中,Hive Meta Service可以作为上述实施例中的元数据管理服务,管理Hive表和Hudi表对应的元数据信息。
以下结合一个具体的实施例,对本说明的基于湖仓一体的元数据同步方法进行具体说明。
如图1所示,湖仓中的数据来自多样化的数据源表,数据源表的数据源表经加工后以对应的数据湖表和数据仓库表的形式存储在湖仓中;其中,对应的数据湖表和数据仓库表的元数据,即表结构一致,从而使得针对湖仓中表的查询分析始终能够统一。
如图3所示,当数据源表的数据结构发生改变时,湖仓中的数据湖表和数据仓表可以同步进行元数据的更新。
具体的,可以预先针对数据表部署一个元数据同步服务,该元数据同步服务可以根据预设的周期,从源端获取源数据表的元数据信息,并将获取到的元数据信息进行保存。
每次获取到源数据表的元数据信息后,与保存的上一次获取到的元数据信息进行比对,如果与上一次获取到的元数据不同,则可以确认数据源表的元数据发生了改变,即源数据表的结构发生了改变,需要将对应的数据湖表和数据仓库表的元数据也进行对应的更改。
上述元数据同步服务确认数据源表的元数据发生了改变后,可以向预设的消息中间件中对应的消息主题发送元数据变更消息。上述元数据变更消息中可以包含数据源表变化后的元数据,以及数据源表对应的优先级信息。其中,数据源表对应的优先级信息反映了该数据源表对应的湖仓中的数据仓库表和数据湖表对数据实时性性的要求高低,实时性要求越高,则对应的数据源表对应的优先级越高。
消息中间件中包含多个与不同优先级对应的消息队列。消息中间件接收到元数据同步服务发送的元数据变更消息后,可以根据元数据表更消息包含的优先级信息,将元数据变更消息通过优先级对应的消息队列进行发送。
湖仓中预设的元数据管理服务可以实时地从消息中间件中获取元数据同步服务发送的元数据变更信息。具体的,元数据管理服务可以基于优先级从高到低的顺序,依次从消息中间件的各个消息队列中获取元数据变更消息,从而使得高优先级的数据表可以优先进行更新。
获取到元数据变更消息后,元数据管理服务可以消费该元数据变更消息,以获取到变更后的元数据信息。
如图4所示,元数据管理服务可以生成一个事务,来同步更新数据湖表和数据仓库表的元数据。
具体的,该事务可以用于根据数据源表更新后的元数据信息,同步更新数据湖表和数据仓库表的元数据。
该事务包括了更新数据湖表的元数据的第一更新操作,和用于更新数据仓库表的第二更新操作。
该事务执行时,可以通过预设的数据湖管理服务,执行第一更新操作;通过预设的数据仓库管理服务,所述第二更新操作。在基于Hive和Hudi的湖仓一体架构中,上述数据湖管理服务可以是Spark APP;数据仓库管理服务可以是Hive Meta Service。
只有当第一更新操作和第二更新操作都执行成功的情况下,上述事务才能确认执行成功。
当第一更新操作和第二更新操作中任意一项或两项执行失败时,上述事务均执行失败。
并且,为了保证数据湖表和数据仓库表元数据的一致性,当第一更新操作和第二更新操作中任意一项执行失败,另一项执行成功时,执行成功的操作要进行回滚,恢复到事务未执行时的状态。
以上实施例,通过通过在湖仓中存储的数据湖表和数据仓表对应的数据源表的元数据信息发生变化时,同步更新数据湖表的元数据和数据仓表的元数据,以保持湖仓中的数据湖表和数据仓表能够感知到数据源表结构的变化,并始终保持数据湖表和数据仓表的元数据,即表结构始终保持同步,使得针对湖仓中表的查询分析始终能够统一。
进一步地,通过基于优先级的数据中间件,保证了高实时性要求的数据可以优先进行更新。
进一步地,通过将数据湖表和数据仓库表的更新通过打包事务的方式实现,保证了数据湖表和数据仓库表的元数据更新的强一致性。
请参见图5,图5是一示例性的实施例示出的一种基于湖仓一体的元数据同步装置所在电子设备的硬件结构图。在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参见图6,图6是一示例性的实施例示出的一种基于湖仓一体的元数据同步装置的框图。
上述基于湖仓一体的元数据同步装置可以包括:
获取单元610,用于获取数据源表的元数据信息;
判断单元620,用于判断所述数据源表的元数据信息是否发生改变;
同步单元630,用于在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。在一实施例中,所述元数据信息,基于所述数据仓库对应的数据仓库管理服务生成。
在一实施例中,所述获取单元610,具体用于:
通过预先部署的元数据同步服务,周期性获取所述数据源表的元数据信息;
所述判断单元620,具体用于:
将获取的所述元数据信息,与已保存的所述数据源表的元数据信息进行比对;
在比对不一致的情形下,确定所述元数据信息发生改变。
在一实施例中,所述同步单元630,具体用于:
在所述数据源表的溯源数据信息发生改变的情形下,通过所述元数据同步服务向预设的消息中间件,发送元数据变更消息;其中,所述元数据变更消息包含改变后的所述元数据;
通过预设的元数据管理服务从所述消息中间件,获取所述元数据变更消息;
响应于所述元数据管理服务接收到所述元数据变更信息,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
在一实施例中,所述同步单元630,具体用于:
生成事务;所述事务包括第一更新操作与第二更新操作;所述第一更新操作包括根据改变后的所述元数据,更新与所述数据源表对应的数据湖表的元数据,所述第二更新操作包括根据改变后的所述元数据,更新与所述数据源表对应的数据仓库表的元数据;
执行所述事务;
在所述事务执行成功的情形下,确定完成同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
在一实施例中,所述同步单元630,具体用于:
执行所述事务包括的所述第一更新操作与所述第二更新操作;
在所述第一更新操作和所述第二更新操作均执行成功的情形下,确定所述事务执行成功;
在所述第一更新操作或所述第二更新操作执行失败的情形下,确定所述事务执行失败,并且回滚另一更新操作;
在所述第一更新操作和所述第二更新操作执行失败的情形下,确定所述事务执行失败。
在一实施例中,湖仓部署了数据仓库管理服务和数据湖管理服务;
通过预设的数据湖管理服务,执行所述第一更新操作;
通过预设的数据仓库管理服务,执行所述第二更新操作。
在一实施例中,所述湖仓包括基于Hudi和Hive的湖仓;
所述数据湖表包括Hudi表,所述数据湖管理服务包括Spark APP;
所述数据仓库表包括Hive表,所述数据仓库管理服务包括Hive Meta Service。
在一实施例中,所述消息中间件包含高优先级的消息队列、中优先级的消息队列和低优先级的消息队列;
所述元数据变更消息包含所述源数据表对应的预设的优先级;
所述同步单元630,具体用于:
通过预设的元数据管理服务,依次从所述消息中间件包含的高优先级的消息队列、中优先级的消息队列和低优先级的消息队列中获取所述元数据变更消息。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、家具或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、家具或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、家具或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (10)

1.一种基于湖仓一体的元数据同步方法,其特征在于,所述方法包括:
获取数据源表的元数据信息;
判断所述数据源表的元数据信息是否发生改变;
在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
2.根据权利要求1所述的方法,其特征在于,所述获取数据源表的元数据信息,包括:
通过预先部署的元数据同步服务,周期性获取所述数据源表的元数据信息;
所述判断所述数据源表的元数据信息是否发生改变,包括:
将获取的所述元数据信息,与已保存的所述数据源表的元数据信息进行比对;
在比对不一致的情形下,确定所述元数据信息发生改变。
3.根据权利要求2所述的方法,其特征在于,
所述在所述数据源表的溯源数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据,包括:
在所述数据源表的溯源数据信息发生改变的情形下,通过所述元数据同步服务向预设的消息中间件,发送元数据变更消息;其中,所述元数据变更消息包含改变后的所述元数据;
通过预设的元数据管理服务从所述消息中间件,获取所述元数据变更消息;
响应于所述元数据管理服务接收到所述元数据变更信息,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
4.根据权利要求3所述的方法,其特征在于,所述根据改变后的所述元数据,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据,包括:
生成事务;所述事务包括第一更新操作与第二更新操作;所述第一更新操作包括根据改变后的所述元数据,更新与所述数据源表对应的数据湖表的元数据,所述第二更新操作包括根据改变后的所述元数据,更新与所述数据源表对应的数据仓库表的元数据;
执行所述事务;
在所述事务执行成功的情形下,确定完成同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
5.根据权利要求4所述的方法,其特征在于,所述执行所述事务,包括:
执行所述事务包括的所述第一更新操作与所述第二更新操作;
在所述第一更新操作和所述第二更新操作均执行成功的情形下,确定所述事务执行成功;
在所述第一更新操作或所述第二更新操作执行失败的情形下,确定所述事务执行失败,并且回滚另一更新操作;
在所述第一更新操作和所述第二更新操作执行失败的情形下,确定所述事务执行失败。
6.根据权利要求5所述的方法,其特征在于,湖仓部署了数据仓库管理服务和数据湖管理服务;
通过预设的数据湖管理服务,执行所述第一更新操作;
通过预设的数据仓库管理服务,执行所述第二更新操作。
7.根据权利要求3所述的方法,其特征在于,
所述消息中间件包含高优先级的消息队列、中优先级的消息队列和低优先级的消息队列;
所述元数据变更消息包含所述源数据表对应的预设的优先级;
所述通过所述元数据同步服务向预设的消息中间件,发送元数据变更消息,包括:
通过所述元数据同步服务向预设的消息中间件中,与所述源数据表对应的预设的优先级对应的消息队列,发送元数据变更信息;
所述通过预设的元数据管理服务从所述消息中间件,获取所述元数据变更消息,包括:
通过预设的元数据管理服务,依次从所述消息中间件包含的高优先级的消息队列、中优先级的消息队列和低优先级的消息队列中获取所述元数据变更消息。
8.一种基于湖仓一体的元数据同步装置,其特征在于,所述装置包括:
获取单元,用于获取数据源表的元数据信息;
判断单元,用于判断所述数据源表的元数据信息是否发生改变;
同步单元,用于在所述数据源表的元数据信息发生改变的情形下,根据改变后的所述元数据信息,同步更新与所述数据源表对应的数据湖表的元数据和与所述数据源表对应的数据仓库表的元数据。
9.一种电子设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1-7任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1-7任一项所述的方法。
CN202310542790.5A 2023-05-11 2023-05-11 一种基于湖仓一体的元数据同步方法、装置、设备及介质 Pending CN116595096A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310542790.5A CN116595096A (zh) 2023-05-11 2023-05-11 一种基于湖仓一体的元数据同步方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310542790.5A CN116595096A (zh) 2023-05-11 2023-05-11 一种基于湖仓一体的元数据同步方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN116595096A true CN116595096A (zh) 2023-08-15

Family

ID=87604017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310542790.5A Pending CN116595096A (zh) 2023-05-11 2023-05-11 一种基于湖仓一体的元数据同步方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116595096A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116881319A (zh) * 2023-09-06 2023-10-13 杭州比智科技有限公司 一种元数据采集系统及快速实现元数据采集和存储的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116881319A (zh) * 2023-09-06 2023-10-13 杭州比智科技有限公司 一种元数据采集系统及快速实现元数据采集和存储的方法

Similar Documents

Publication Publication Date Title
AU2019262823B2 (en) Input and output schema mappings
CN109002484B (zh) 一种用于顺序消费数据的方法及系统
CN109743137B (zh) 一种支持更新的分布式延迟消息队列处理系统
CN112783848B (zh) 一种数据同步方法、装置及电子设备
CN109614270A (zh) 基于Hbase的数据读写方法、装置、设备及存储介质
CN112632035A (zh) 面向自主可控数据库迁移方法及存储介质
CN116595096A (zh) 一种基于湖仓一体的元数据同步方法、装置、设备及介质
EP3470992A1 (en) Efficient storage and utilization of a hierarchical data set
CN115114359A (zh) 用户数据处理方法及装置
CN114594914A (zh) 用于分布式存储系统的控制方法及系统
CN114416868B (zh) 一种数据同步方法、装置、设备及存储介质
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
CN111782346A (zh) 基于同库模式的分布式事务全局id生成方法及装置
CN113297245A (zh) 获取执行信息的方法及装置
CN115357352A (zh) 分布式异步任务调度方法、装置、计算机设备、存储介质
CN116186082A (zh) 基于分布式的数据汇总方法、第一服务器和电子设备
CN112948501B (zh) 数据解析方法、装置及系统
CN109522053A (zh) 一种大规模并行处理系统及数据处理方法
CN113656496A (zh) 数据处理方法及系统
CN114297273B (zh) 一种数据抽取方法及装置
CN116126546B (zh) 一种性能调优的方法、装置、电子设备及介质
CN116595384B (zh) 模型训练方法及装置
CN116599875B (zh) 一种多集群监听调度方法、装置、设备和可读存储介质
CN115730016B (zh) 数据同步方法、系统、装置、计算机设备和存储介质
CN118132600A (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