CN118312517A - Iceberg表结构的管理方法、电子设备及存储介质 - Google Patents

Iceberg表结构的管理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN118312517A
CN118312517A CN202410733788.0A CN202410733788A CN118312517A CN 118312517 A CN118312517 A CN 118312517A CN 202410733788 A CN202410733788 A CN 202410733788A CN 118312517 A CN118312517 A CN 118312517A
Authority
CN
China
Prior art keywords
field
configuration information
change
iceberg
table structure
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
CN202410733788.0A
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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Publication of CN118312517A publication Critical patent/CN118312517A/zh
Pending legal-status Critical Current

Links

Abstract

本申请公开了Iceberg表结构的管理方法、电子设备及存储介质,该方法包括:接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作;对第一配置信息进行转换,识别出第一配置信息对应的表结构变化;根据表结构变化,将第一配置信息转换为目标操作集合;根据目标操作集合对Iceberg表结构进行变更操作。通过上述方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本。

Description

Iceberg表结构的管理方法、电子设备及存储介质
技术领域
本申请涉及表结构管理技术领域,特别是涉及Iceberg表结构的管理方法、电子设备及存储介质。
背景技术
Apache Iceberg是一种用于大型数据分析场景的开放表格式,由于其支持表结构变更、隐藏分区、时间旅行、快照回滚、查询高效、高效Upsert等特性,被广泛应用在构建湖仓一体化场景中。Apache Iceberg的诞生解决了数据平台型产品传统Lambda架构 、Kappa架构的痛点。未来将被广泛使用在平台实时数仓建设中。
当前通常以SQL(Structured Query Language,结构化查询语言)命令行进行Iceberg Schema操作例如创建、删除、修改字段等。
发明内容
本申请提供的Iceberg表结构的管理方法、电子设备及存储介质,能够简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种Iceberg表结构的管理方法,该方法包括:接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作;对第一配置信息进行转换,识别出第一配置信息对应的表结构变化;根据表结构变化,将第一配置信息转换为目标操作集合;根据目标操作集合对Iceberg表结构进行变更操作。
其中,对第一配置信息进行转换,识别出第一配置信息对应的表结构变化,包括:从数据库中获取Iceberg表的当前表结构的第二配置信息;结合第二配置信息,识别出第一配置信息对应的表结构变化。
其中,根据表结构变化,将第一配置信息转换为目标操作集合,包括:响应于表结构变化中包含表级别变化,将表级别变化对应的第一配置信息转换为表级别操作;响应于表结构变化中包含字段级别变化,将字段级别变化对应的第一配置信息转换为字段级别操作。
其中,将表级别变化对应的第一配置信息转换为表级别操作,包括:响应于表级别变化对应的请求类型为POST请求,将表级别变化对应的第一配置信息转换为创建表操作或重命名表操作;响应于表级别变化对应的请求类型为DELETE请求,将表级别变化对应的第一配置信息转换为删除表操作。
其中,将字段级别变化对应的第一配置信息转换为字段级别操作,包括:响应于字段级别变化为字段新增,将字段级别变化对应的第一配置信息转换为字段新增操作;响应于字段级别变化为字段删除,将字段级别变化对应的第一配置信息转换为字段删除操作;响应于字段级别变化为字段修改,将字段级别变化对应的第一配置信息转换为字段修改操作。
其中,根据目标操作集合对Iceberg表结构进行变更操作,包括:根据目标操作集合中每一操作的操作级别,调用对应的接口;利用接口对Iceberg表结构进行变更操作。
其中,根据目标操作集合中每一操作的操作级别,调用对应的接口,包括:响应于操作级别为字段级别,按照普通字段、分区字段、字段顺序、主键设置的顺序,调用对应的接口。
其中,接收用户在可视化操作界面输入的第一配置信息之前,包括:提供可视化操作界面;可视化操作界面支持Iceberg表结构的配置信息展示、表名修改、字段名称修改、字段类型定义、字段顺序定义、新增字段、删除字段、新增分区和/或删除分区。
为解决上述技术问题,本申请采用的另一技术方案是:提供一种电子设备,该电子设备包括存储器以及与存储器耦接的处理器,存储器存储有至少一计算机程序,至少一计算机程序被处理器加载并执行时,用于实现如上述技术方案提供的方法。
为解决上述技术问题,本申请采用的另一技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质有至少一段程序,至少一段程序被处理器加载并执行时,用于实现如上述技术方案提供的方法。
区别于当前技术,本申请提供的Iceberg表结构的管理方法、电子设备及计算机可读存储介质,利用可视化操作界面的方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本,同时可以更直观的看到当前Iceberg 表的结构。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请中Iceberg表结构的管理方法一实施例的流程示意图;
图2是本申请中Iceberg表结构的管理方法一实施例的流程示意图;
图3是本申请中Iceberg表结构的管理方法另一实施例的流程示意图;
图4是本申请中Iceberg表结构的管理方法另一实施例的流程示意图;
图5是本申请中Iceberg表结构的管理方法另一实施例的流程示意图;
图6是本申请中电子设备一实施例的结构示意图;
图7是本申请中计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明作进一步的详细描述。特别指出的是,以下实施例仅用于说明本发明,但不对本发明的范围进行限定。同样的,以下实施例仅为本发明的部分实施例而非全部实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
Apache Iceberg是一种用于大型数据分析场景的开放表格式,由于其支持表结构变更、隐藏分区、时间旅行、快照回滚、查询高效、高效Upsert等特性,被广泛应用在构建湖仓一体化场景中。Apache Iceberg的诞生解决了数据平台型产品传统Lambda架构、Kappa架构的痛点。未来将被广泛使用在平台实时数仓建设中。
当前通常以SQL命令行进行Iceberg Schema操作例如创建、删除、修改字段等。但是因使用SQL命令行,则需要用户具有较高的SQL语言能力,以及如果需要进行多字段编辑的场景,则要单独编写执行多条SQL命令。
基于此,本申请提出利用可视化操作界面的方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本,同时可以更直观的看到当前Iceberg 表的结构。具体参阅以下任一实施例。
请参阅图1,图1是本申请中Iceberg表结构的管理方法一实施例的流程示意图。该方法包括:
步骤11:接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作。
可视化操作界面支持Iceberg表结构的配置信息展示、表名修改、字段名称修改、字段类型定义、字段顺序定义、新增字段、删除字段、新增分区和/或删除分区。其中,字段类型定义支持Iceberg支持的所有类型定义,简单字段支持下拉选择,复杂字段支持手写输入。以及支持设置字段唯一属性。在一些实施例中,字段类型可以为整型、浮点型、字符型、布尔型、double、short、long、byte、数组型、枚举型、长整型、指针类型、空类型、八进制、值类型、复数型、number、引用类型等其中至少一种。
在一应用场景中,可以在可视化操作界面Catalog下的所有Iceberg Schema信息,在Catalog下可以新建Schema信息,也可以对已有的scheme进行修改和删除操作。
在一些实施例中,结合图2进行说明:
在用户需要对Iceberg表结构进行管理时,可以通过在图2所示的可视化操作界面进行操作,形成相应的配置信息。如增加、修改删除等操作。
如图2中,通过填写相应的字段名称、字段别名、字段类型、长度、主键、描述等信息实现对字段的配置。以及可以对分区信息进行配置。
步骤12:对第一配置信息进行转换,识别出第一配置信息对应的表结构变化。
在一些实施例中,在用户在可视化操作界面输入对应的第一配置信息后,选择界面保存按钮,则获取该可视化操作界面上所有的第一配置信息。然后按照相应的自定义结构对第一配置信息进行转换,形成结构体。并依据该结构体识别出第一配置信息对应的表结构变化。其中,表结构变化可以是表级别变化和/或字段级别变化。
步骤13:根据表结构变化,将第一配置信息转换为目标操作集合。
当表结构变化中包含表级别变化,则将对应的第一配置信息转换封装为表级别操作。
当表结构变化中包含字段级别变化,则将对应的第一配置信息转换封装为字段级别操作。
以此,目标操作集合中根据具体的第一配置信息可以包括表级别操作,也可以包括字段级别操作,还可以包括表级别操作和字段级别操作。
步骤14:根据目标操作集合对Iceberg表结构进行变更操作。
在一些实施例中,通过配置项创建Iceberg Catalog如,HiveCatalog/HadoopCatalog,基于Catalog,对目标操作集合中的所有操作进行执行API(ApplicationProgramming Interface,应用程序编程接口)操作,完成对Iceberg表结构的变更操作。
在一些实施例中,对Iceberg表结构的变更操作可以是对表级别的增加、删除、重命名。也可以是对字段级别的增加、删除、修改。
在一些实施例中,可视化操作界面能够提供Iceberg表的结构的显示,如在变更字段时,通过下拉方式,在下拉框中显示多个字段以供用户选择,无需用户输入已有的字段。
在本实施例中,利用可视化操作界面的方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本,同时可以更直观的看到当前Iceberg表的结构。
即,无需用户利用复杂的SQL命令行单一配置,通过本申请的可视化操作界面能够使用户在该操作界面上同时进行多个变更操作的配置,降低修改成本。如,选择需要修改的字段、需要删除的字段、以及输入需要新增的字段、以及需要删除的表、新增的表。即用户无需按照相关技术中每输入一条SQL命令行执行一条SQL命令行的方式,在执行完当前SQL命令行后再次输入SQL命令行,进而本申请的技术方案能够提升变更效率。
请参阅图3,图3是本申请中Iceberg表结构的管理方法另一实施例的流程示意图。该方法包括:
步骤31:接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作。
步骤31与本申请任一实施例具有相同或相似的技术方案,这里不做赘述。
步骤32:从数据库中获取Iceberg表的当前表结构的第二配置信息。
可以理解,在Iceberg表未变更时,则Iceberg表在数据库中存储有其对应的配置信息。
因此,在获取到用户输入的第二配置信息时,可以从数据库中获取Iceberg表的当前表结构的第二配置信息,以便于进行比较,确定出具体的表结构变化。
步骤33:结合第二配置信息,识别出第一配置信息对应的表结构变化。
如将第二配置信息与第一配置信息进行比较,识别出两个配置信息之间的配置差异(表结构变化),例如新增了哪些字段、删除了哪些字段、修改了哪些字段、新增了哪些表、删除哪些表。
如,表结构变化包括表级别变化和字段级别变化。表级别变化包括创建表、重命名表和删除表。字段级别变化包括字段新增、字段修改、字段删除。
步骤34:根据表结构变化,将第一配置信息转换为目标操作集合。
步骤35:根据目标操作集合对Iceberg表结构进行变更操作。
步骤34至步骤35与本申请任一实施例具有相同或相似的技术方案,这里不做赘述。
在本实施例中,利用可视化操作界面的方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本,同时可以更直观的看到当前Iceberg表的结构。
即,无需用户利用复杂的SQL命令行单一配置,通过本申请的可视化操作界面能够使用户在该操作界面上同时进行多个变更操作的配置,降低修改成本。如,选择需要修改的字段、需要删除的字段、以及输入需要新增的字段、以及需要删除的表、新增的表。即用户无需按照相关技术中每输入一条SQL命令行执行一条SQL命令行的方式,在执行完当前SQL命令行后再次输入SQL命令行,进而本申请的技术方案能够提升变更效率。
进一步,通过与数据库中配置信息进行比较,确定出表结构变化,进而封装为对应的操作,形成操作集合,实现一次性完成对Iceberg表结构的变更操作。
请参阅图4,图4是本申请中Iceberg表结构的管理方法另一实施例的流程示意图。该方法包括:
步骤41:接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作。
步骤42:对第一配置信息进行转换,识别出第一配置信息对应的表结构变化。
步骤41至步骤42与本申请任一实施例具有相同或相似的技术方案,这里不做赘述。
步骤43:响应于表结构变化中包含表级别变化,将表级别变化对应的第一配置信息转换为表级别操作。
在一些实施例中,表级别操作包括创建表操作、重命名表操作和删除表操作。
具体地,响应于表级别变化对应的请求类型为POST请求,将表级别变化对应的第一配置信息转换为创建表操作或重命名表操作。
在表级别变化对应的请求类型为POST请求时,获取表对应的ID,若ID为空,则将表级别变化对应的第一配置信息转换为创建表操作。
其中,创建表操作需要的配置信息包括表名、字段详情、分区字段详情等信息。字段详情包括字段名称、字段类型、主键以及顺序等信息。
如ID不为空,则将表级别变化对应的第一配置信息转换为重命名表操作。其中,重命名操作需要的配置信息包括重命名的表的旧名称和新名称。
响应于表级别变化对应的请求类型为DELETE请求,将表级别变化对应的第一配置信息转换为删除表操作。
其中,删除表操作需要的配置信息包括被删除表的表名。
在一些实施例中,用户可以在可视化操作界面同时输入创建表操作、重命名表操作、删除表操作对应的配置信息。
步骤44:响应于表结构变化中包含字段级别变化,将字段级别变化对应的第一配置信息转换为字段级别操作。
在一些实施例中,字段级别操作包括字段新增操作、字段修改操作、字段删除操作。
在一应用场景中,响应于字段级别变化为字段新增,将字段级别变化对应的第一配置信息转换为字段新增操作。
具体地,通过从数据库中获取Iceberg表的当前表结构的第二配置信息与第一配置信息比较,若字段ID在第一配置信息中有,在第二配置信息中没有,则该字段ID对应字段新增,则将该字段ID对应的配置信息转换为字段新增操作。其中,字段新增操作对应的配置信息包括字段名称、字段类型以及序号等信息。
在一应用场景中,响应于字段级别变化为字段删除,将字段级别变化对应的第一配置信息转换为字段删除操作。
具体地,通过从数据库中获取Iceberg表的当前表结构的第二配置信息与第一配置信息比较,若字段ID在第一配置信息中没有,在第二配置信息中有,则该字段ID对应字段删除,则将该字段ID对应的配置信息转换为字段删除操作。
在一应用场景中,响应于字段级别变化为字段修改,将字段级别变化对应的第一配置信息转换为字段修改操作。
具体地,通过从数据库中获取Iceberg表的当前表结构的第二配置信息与第一配置信息比较,若字段ID在第一配置信息中有,在第二配置信息中有,第一配置信息中的字段ID与第二配置信息中的字段ID一致,则该字段ID对应字段修改,则将该字段ID对应的配置信息转换为字段修改操作。其中,字段修改操作对应的配置信息包括字段名称、字段类型、主键以及序号等信息。
在一些实施例中,用户可以在可视化操作界面同时输入字段新增操作、字段删除操作、字段修改操作对应的配置信息。
步骤45:根据目标操作集合对Iceberg表结构进行变更操作。
步骤45与本申请任一实施例具有相同或相似的技术方案,这里不做赘述。
在本实施例中,利用可视化操作界面的方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本,同时可以更直观的看到当前Iceberg表的结构。
即,无需用户利用复杂的SQL命令行单一配置,通过本申请的可视化操作界面能够使用户在该操作界面上同时进行多个变更操作的配置,降低修改成本。如,选择需要修改的字段、需要删除的字段、以及输入需要新增的字段、以及需要删除的表、新增的表。即用户无需按照相关技术中每输入一条SQL命令行执行一条SQL命令行的方式,在执行完当前SQL命令行后再次输入SQL命令行,进而本申请的技术方案能够提升变更效率。
进一步,通过与数据库中配置信息进行比较,确定出表结构变化,进而封装为对应的操作,形成操作集合,实现一次性完成对Iceberg表结构的变更操作。
进一步,通过识别出第一配置信息中对应的操作,进而形成操作集合,以便于后续的接口调用。
请参阅图5,图5是本申请中Iceberg表结构的管理方法另一实施例的流程示意图。该方法包括:
步骤51:接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作。
步骤52:对第一配置信息进行转换,识别出第一配置信息对应的表结构变化。
步骤53:根据表结构变化,将第一配置信息转换为目标操作集合。
步骤51至步骤53与本申请任一实施例具有相同或相似的技术方案,这里不做赘述。
步骤54:根据目标操作集合中每一操作的操作级别,调用对应的接口。
对于目标操作集合中的表级别操作,通过识别表级别操作的类型,按照类型调用相应的接口。
对于目标操作集合中的字段级别操作,响应于操作级别为字段级别,按照普通字段、分区字段、字段顺序、主键设置的顺序,调用对应的接口。
在一些实施例中,对于普通字段,通过配置项创建Iceberg Catalog,根据Catalog获取表信息后,开启表事务table.newTransaction()。其中,事务表示多个操作如果一个操作失败,所有操作都会回滚,整个事务提交后所有修改生效。根据目标操作集合中相应操作转换成对应的API操作,完成后在事务内提交。如,操作类型为字段新增操作,则调用字段新增接口。操作类型为字段修改操作,则调用字段修改接口。操作类型为字段删除操作,则调用字段删除接口。
其中,字段修改操作对应两个接口,字段内容更新接口和字段更新接口。在进行字段修改操作时,先调用字段内容更新接口,对字段内容进行更新,然后调用字段更新接口,对相应的字段进行更新。
在一些实施例中,对于分区字段,根据目标操作集合中相应操作转换成对应的API操作,完成后在事务内提交。如,操作类型为字段新增操作,则调用字段新增接口。操作类型为字段修改操作,则调用字段修改接口。操作类型为字段删除操作,则调用字段删除接口。虽然分区字段与普通字段的流程上基本一致,但是其对应使用的接口不一致。同时为了保证顺序,删除分区字段所属的普通字段时,需要先移除分区字段信息,再执行字段删除操作。
在一些实施例中,对于字段顺序的调整,第一配置信息中包含了所有字段的顺序,按照索引下标(index)排序找到序号最小的字段所对应名称,先确定出首字段,然后逐个将字段排序。
在一些实施例中,对于主键设置,第一配置信息中包含了所有字段是否主键的标识,处理上先将表的所有字段的主键清除,同时对包含主键标识的字段增加主键标识。
步骤55:利用接口对Iceberg表结构进行变更操作。
在按照普通字段、分区字段、字段顺序、主键设置的顺序调用相应的接口处理结束后,然后完成事务提交,修改同步到Iceberg元数据生效。
通过API完成Iceberg元数据更新后,将当前最新的表结构(Schema)信息存储到数据库中。数据库中信息可以用于在可视化操作界面进行表Schema查询展示和配置转换模块比较表Schema变化。
在一应用场景中,利用前端的可视化操作界面进行Iceberg Schema页面呈现、创建、编辑、删除。如,展示Catalog下的所有Iceberg Schema信息,在Catalog下可以新建Schema信息,也可以对已有的scheme进行修改和删除操作。可视化操作界面支持Iceberg所有原生特性,可以修改表名、修改字段名称、字段类型、字段顺序、新增、删除字段、新增分区、删除分区。字段类型支持Iceberg支持的所有类型,简单字段支持下拉选择,复杂字段支持手写输入。支持设置字段唯一属性。
用户可以在可视化操作界面进行配置信息的创建、编辑和/或删除等。然后触发保存,进而下发请求内容到后台。该请求中包含对应的配置信息。
后台在接收到前端由可视化操作界面下发的配置信息,将配置信息进行处理转换,识别出配置中的Schema变化,例如新增了哪些字段、删除了哪些字段、修改了哪些字段等等,将这些变化转换成自定义的结构。配置模块依赖关系型数据库例如Mysql,用于查询当前Iceberg表的Schema信息。
具体地,先通过请求类型区分大类操作,例如POST 为创建、修改,DELETE为删除。通过是否包含表ID来区分是创建还是修改(id为数据库主键ID,存在ID表示为编辑操作)。大类区分后,将Schema变更转换为自定义数据结构:CreateTableOperation(创建表操作)、DeleteTableOperation(删除表操作)、RenameTableOperation(重命名表操作)、AddColumnOperation(字段新增操作)、ModifyColumnOperation(字段修改操作)、DeleteColumnOperation(字段删除操作)。
可以理解,用户在可视化操作界面的配置信息可转化为一个或多个操作集合。例如删除表对应一个DeleteTableOperation操作,同时修改多个字段名时对应多个ModifyColumnOperation操作。
对于表级别操作:根据请求类型,区分操作类型,将操作封装成表操作对应的CreateTableOperation 、DeleteTableOperation 、RenameTableOperation。
CreateTableOperation:记录了表名称、字段信息(名称、类型、主键、顺序)。
RenameTableOperation:记录了表旧名称、表新名称。
DeleteTableOperation:记录了表名称。
对于字段级别操作:在数据库中,已经创建的表字段(普通字段、分区字段)都有唯一标识的ID,在配置信息下发时会包含在下发参数中。对于所有的字段修改,都视为对一个已有表的Schema修改,请求类型均为POST,区别与表操作的POST接口,包含字段下发参数结构体中会标识字段修改。对于字段修改的请求,配置模块会先查询字段对应表的当前的字段配置信息。通过比较下发配置和查询结果进行字段操作封装。这里定义下发配置为 Pageconfiguration(第一配置信息),数据库中查询出的配置为DB configuration(第二配置信息)。
字段新增:若Page configuration 包含的字段columnId为-1,标识字段为新增,封装AddColumnOperation包含新增字段名称、类型、主键、是否分区字段、字段描述。
字段删除:若数据库中包含下发配置中不存在的字段ID,例如DB configuration包含columnId 10,Page configuration中没有columnId 10的字段,则标识该字段为删除。封装DeleteColumnOperation,包含字段名称、是否分区字段。
字段修改:对于Page configuration和DB configuration 中相同columnId的字段处理修改信息,若名称变化,标识名称修改,记录旧名称、新名称、若类型变化标识类型修改,记录新类型,若主键变化,记录是否主键。一个字段可以包含0个至多个变化。对于同一个columnId的字段变更都会封装在一个ModifyColumnOperation中,ModifyColumnOperation中记录了此columnId对应字段的所有变化,例如名称变化、类型变化、主键变化、是否分区字段。
上述提到的字段可以为普通字段或分区字段,处理逻辑一致。
进一步,利用API执行模块处理上述的Operation变更集合(目标操作集合)。将变化最终转换到Iceberg Schema元数据中,通过配置项创建Iceberg Catalog(HiveCatalog/HadoopCatalog),基于Catalog进行执行API操作。同时也会将最新的Schema结构存储到DB(数据库)。
对于表级别变更:单次修改仅会生成一个Operation(操作),通过识别不同的Operation执行相应的API,例如:
CreateTableOperation对应catalog.createTable(name, Schema, spec,tableProperties)。
RenameTableOperation对应catalog.renameTable(name, newName)。
DeleteTableOperation对应catalog.dropTable(name)。
对于字段级别变更:单次修改可以包含多个字段的变更(例如同时添加、修改、删除的字段进行保存),需要处理List<Operation>集合。
为保证一次配置完成多字段更新,整体处理顺序上为: 普通字段->分区字段 –>字段顺序 –>主键设置。
对于普通字段处理:根据Catalog获取表信息后,开启表事务table.newTransaction()(事务表示多个操作如果一个操作失败,所有操作都会回滚,整个事务提交后所有修改生效)。根据Operation转换成对应的API操作,完成后再事务内提交。
对于分区字段处理:处理上跟普通字段基本一致,使用的API不同,同时为了保证顺序,删除分区字段所属的普通字段时,需要先移除分区字段信息,再执行字段删除操作。
对于字段顺序调整:配置信息下发的列表中包含了所有字段的顺序,按照index排序找到序号最小的字段所对应名称,通过API updateSchema().moveFirst()确定首字段,并通过updateSchema().moveAfter(name ,afterName) 逐个将字段排序。
对于主键设置:Page configuration中包含了所有字段是否主键的标识,处理上先将表的所有字段的主键清除,同时对包含主键标识的字段增加主键标识。通过APIupdateSchema().setIdentifierFields(主键字段名称列表)进行设置。
普通字段、分区字段、字段顺序、主键设置处理结束后,通过transaction.commit完成事务提交,修改同步到Iceberg元数据生效。
通过API完成Iceberg元数据更新后,将当前最新的表Schema信息存储到DB中,用于页面进行表Schema查询展示和配置转换模块比较表Schema变化。
请参阅图6,图6是本申请中电子设备一实施例的结构示意图。该电子设备60包括存储器61以及与存储器61耦接的处理器62,存储器61存储有至少一计算机程序,至少一计算机程序被处理器62加载并执行时,用于实现以下方法:
接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作;对第一配置信息进行转换,识别出第一配置信息对应的表结构变化;根据表结构变化,将第一配置信息转换为目标操作集合;根据目标操作集合对Iceberg表结构进行变更操作。
可以理解,至少一计算机程序被处理器62加载并执行时,还用于实现上述任一实施例的方法。
在一些实施例中,电子设备可以作为数据中台的执行主体。即上述述的Iceberg为数据中台的Iceberg。
请参阅图7,图7是本申请中计算机可读存储介质一实施例的结构示意图。该计算机可读存储介质70有至少一段程序71,至少一段程序71被处理器加载并执行时,用于实现以下方法:
接收用户在可视化操作界面输入的第一配置信息;第一配置信息用于对Iceberg表结构进行至少一个变更操作;对第一配置信息进行转换,识别出第一配置信息对应的表结构变化;根据表结构变化,将第一配置信息转换为目标操作集合;根据目标操作集合对Iceberg表结构进行变更操作。
可以理解,至少一段程序71被处理器加载并执行时,用于实现上述任一实施例的方法。
综上所述,本申请提供的Iceberg表结构的管理方法、电子设备及计算机可读存储介质,利用可视化操作界面的方式,简化对Iceberg表结构的变更操作,使得用户可以通过可视化操作界面一次性配置多个变更操作,降低修改成本,同时可以更直观的看到当前Iceberg 表的结构。
进一步,通过自定义Schema变更操作同Iceberg API的转换,实现通过使用配置参数实现Iceberg 底层Schema元数据修改的能力,以及实现通过配置参数实现一次变更Scheme中多字段的能力。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种Iceberg表结构的管理方法,其特征在于,所述方法包括:
接收用户在可视化操作界面输入的第一配置信息;所述第一配置信息用于对所述Iceberg表结构进行至少一个变更操作;
对所述第一配置信息进行转换,识别出所述第一配置信息对应的表结构变化;
根据所述表结构变化,将所述第一配置信息转换为目标操作集合;
根据所述目标操作集合对所述Iceberg表结构进行变更操作。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一配置信息进行转换,识别出所述第一配置信息对应的表结构变化,包括:
从数据库中获取所述Iceberg表的当前表结构的第二配置信息;
结合所述第二配置信息,识别出所述第一配置信息对应的表结构变化。
3.根据权利要求1所述的方法,其特征在于,所述根据所述表结构变化,将所述第一配置信息转换为目标操作集合,包括:
响应于所述表结构变化中包含表级别变化,将所述表级别变化对应的第一配置信息转换为表级别操作;
响应于所述表结构变化中包含字段级别变化,将所述字段级别变化对应的第一配置信息转换为字段级别操作。
4.根据权利要求3所述的方法,其特征在于,所述将所述表级别变化对应的第一配置信息转换为表级别操作,包括:
响应于所述表级别变化对应的请求类型为POST请求,将所述表级别变化对应的第一配置信息转换为创建表操作或重命名表操作;
响应于所述表级别变化对应的请求类型为DELETE请求,将所述表级别变化对应的第一配置信息转换为删除表操作。
5.根据权利要求3所述的方法,其特征在于,所述将所述字段级别变化对应的第一配置信息转换为字段级别操作,包括:
响应于所述字段级别变化为字段新增,将所述字段级别变化对应的第一配置信息转换为字段新增操作;
响应于所述字段级别变化为字段删除,将所述字段级别变化对应的第一配置信息转换为字段删除操作;
响应于所述字段级别变化为字段修改,将所述字段级别变化对应的第一配置信息转换为字段修改操作。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标操作集合对所述Iceberg表结构进行变更操作,包括:
根据所述目标操作集合中每一操作的操作级别,调用对应的接口;
利用所述接口对所述Iceberg表结构进行变更操作。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标操作集合中每一操作的操作级别,调用对应的接口,包括:
响应于所述操作级别为字段级别,按照普通字段、分区字段、字段顺序、主键设置的顺序,调用对应的接口。
8.根据权利要求1所述的方法,其特征在于,所述接收用户在可视化操作界面输入的第一配置信息之前,包括:
提供可视化操作界面;所述可视化操作界面支持Iceberg表结构的配置信息展示、表名修改、字段名称修改、字段类型定义、字段顺序定义、新增字段、删除字段、新增分区和/或删除分区。
9.一种电子设备,其特征在于,所述电子设备包括存储器以及与所述存储器耦接的处理器,所述存储器存储有至少一计算机程序,所述至少一计算机程序被所述处理器加载并执行时,用于实现如权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质有至少一段程序,所述至少一段程序被处理器加载并执行时,用于实现如权利要求1-8任一项所述的方法。
CN202410733788.0A 2024-06-07 Iceberg表结构的管理方法、电子设备及存储介质 Pending CN118312517A (zh)

Publications (1)

Publication Number Publication Date
CN118312517A true CN118312517A (zh) 2024-07-09

Family

ID=

Similar Documents

Publication Publication Date Title
CN105447122B (zh) 一种基于多表关联可自主创建档案系统的实现方法
KR101224680B1 (ko) 데이터베이스 내부에 표현된 파일 시스템
US8380702B2 (en) Loading an index with minimal effect on availability of applications using the corresponding table
EP2874077B1 (en) Stateless database cache
US6374252B1 (en) Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
EP1585036A2 (en) Management of parameterized database queries
CN109144994A (zh) 索引更新方法、系统及相关装置
CN108228817A (zh) 数据处理方法、装置和系统
US20080288242A1 (en) System And Method Of Presentation of Multilingual Metadata
JP2001051879A (ja) 非関係データベースへの改良されたアクセスのための方法およびシステム
CN106970958B (zh) 一种流文件的查询与存储方法和装置
JPH01126736A (ja) データ処理システム
US10509632B2 (en) Model augmentation in a model-driven application development environment
CN109815240A (zh) 用于管理索引的方法、装置、设备和存储介质
CN118312517A (zh) Iceberg表结构的管理方法、电子设备及存储介质
CN113885970B (zh) 一种基于脚本生成报表数据的方法、系统及介质
US20130132425A1 (en) Query definition apparatus and method for multi-tenant
CN113886505A (zh) 一种基于搜索引擎和关系型数据库实现动态建模的管理系统
CN112527911B (zh) 一种数据存储方法、装置、设备及介质
CN116611418B (zh) 基于在线编辑的报告处理方法、装置、电子设备及介质
CN108897897B (zh) 一种数据处理方法和装置
EP4170516A1 (en) Metadata elements with persistent identifiers
CN118296009A (zh) 一种数据模型设计器
JPH09167167A (ja) オブジェクト指向データベースにおけるオブジェクト検索方法
JP3570082B2 (ja) データベース装置及びデータベース検索方法

Legal Events

Date Code Title Description
PB01 Publication