掌桥专利:专业的专利平台
掌桥专利
首页

元数据同步方法、系统、设备及存储介质

文献发布时间:2023-06-19 11:52:33


元数据同步方法、系统、设备及存储介质

技术领域

本发明涉及数据处理技术领域,尤其涉及一种元数据同步方法、系统、设备及存储介质。

背景技术

在Kylin成为Apache基金顶级项目后,其关注度大增。又由于Kylin的预计算技术可大大加速查询模式固定的OLAP业务的使用效率,其在中外各互联网公司中得到了广泛的应用。OLAP(Online Analytical Process,联机分析处理),指的是以多维度的方式分析数据,而且能够弹性地提供上卷(Roll-up)、下钻(Drill-down)和透视分析(Pivot)等操作。它是呈现集成性决策信息的方法,多用于决策支持系统、商务智能或数据仓库。Kylin是Apache kylin的简称,是Hadoop大数据平台上的一个开源OLAP引擎,它采用多位立方体预计算技术,可以将大数据的SQL(Structured Query Language,结构化查询语言)查询速度提升到亚秒级别。Hadoop是一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。

使用Kylin时开发人员会在其上手动建立project(项目)、model(模型)、cube(数据立方体)、table(表)并手动进行构建。这在只有一套Kylin集群时没有问题,然而当由于安全原因或其它因素导致有几十甚至上百套Kylin集群时,如果要在每个集群都用手动方法创建同一套Kylin project,则效率太过低下,而且容易出现人为失误。

发明内容

针对现有技术中的问题,本发明的目的在于提供一种元数据同步方法、系统、设备及存储介质,能够实现快速、准确地同步Kylin元数据。

本发明实施例提供一种元数据同步方法,所述方法包括如下步骤:

接收待同步的Kylin元数据的项目名称;

从待同步的Kylin元数据的存储路径中获取待同步的项目的元数据;

接收目标集群的位置信息;

将所述待同步的项目的元数据发送至所述目标集群的位置。

可选地,从所述存储路径中获取待同步的项目的元数据之后,还包括如下步骤:

从所述待同步的项目的元数据中提取各个模型名称和表名称;

根据所述模型名称和表名称,从所述存储路径中获取各个模型的元数据和各个表的元数据。

可选地,从所述存储路径中获取待同步的项目的元数据之后,还包括如下步骤:

从所述待同步的项目的元数据中提取各个数据立方体的名称;

根据所述数据立方体的名称,从所述存储路径中获取各个数据立方体的元数据;

对于每个数据立方体,获取数据立方体的各个片段(cube segment)的元数据。

可选地,将所述待同步的项目的元数据发送至所述目标集群的位置之后,还包括如下步骤:

请求Kylin构建接口,根据所述片段的元数据,依次为各个数据立方体提交片段的构建。

可选地,所述获取数据立方体的所有片段的元数据,包括如下步骤:

对于每个数据立方体,从所述数据立方体的元数据的描述字段中获取描述(cube_desc)的名称,根据所述描述的名称从所述存储路径获取数据立方体的描述的元数据;

从所述描述的元数据中提取片段的字段内容,根据所述片段的字段内容生成片段的元数据。

可选地,所述获取数据立方体的所有片段的元数据之后,还包括如下步骤:

对所述片段的元数据进行筛选,去除构建片段时的日志数据和物理存储信息数据。

可选地,将所述待同步的项目的元数据发送至所述目标集群的位置之前,还包括如下步骤:

接收数据库更名信息;

根据所述数据库更名信息,修改所述表的元数据中的数据库名称。

可选地,将所述待同步的项目的元数据发送至所述目标集群的位置之后,还包括如下步骤:

依次为各个数据立方体更新签名。

本发明实施例还提供一种元数据同步系统,应用于所述的元数据同步方法,所述系统包括:

信息采集模块,用于接收待同步的Kylin元数据的项目名称,以及接收目标集群的位置信息;

数据提取模块,用于从待同步的Kylin元数据的存储路径中获取待同步的项目的元数据;

数据导入模块,用于将所述待同步的项目的元数据发送至所述目标集群的位置。

本发明实施例还提供一种元数据同步设备,包括:

处理器;

存储器,其中存储有所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行所述的元数据同步方法的步骤。

本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的元数据同步方法的步骤。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

本发明所提供的元数据同步方法、系统、设备及存储介质具有下列优点:

本发明提出了一种快速、准确地同步Kylin元数据的方法,对于同样的Kylin业务需要在多个集群同时实现的需求,只需在一个集群进行手工创建、维护项目元数据,其它集群可以一键同步为同样状态,避免人工重复操作,在提高效率的同时,可以减少人为操作失误带来的排查、纠错成本。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。

图1是本发明一实施例的元数据同步方法的流程图;

图2为本发明一实施例的元数据获取的流程图;

图3为本发明一实施例的元数据同步的流程图;

图4是本发明一实施例的元数据同步系统的结构示意图;

图5是本发明一实施例的元数据同步设备的示意图;

图6是本发明一实施例的计算机可读存储介质的示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

如图1所示,为了解决上述技术问题,本发明实施例提供一种元数据同步方法,所述方法包括如下步骤:

S100:接收待同步的Kylin元数据的项目名称;

所述元数据又称为中介数据、中继数据、meta data,为描述数据的数据(dataabout data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。在本文中,Kylin的元数据指的是描述一个project(项目)的所有信息的数据。Project表示项目,代表一套元数据。Kylin里面可以创建多个project项目,有效地把各种业务数据分隔开来。

S200:从待同步的Kylin元数据的存储路径中获取待同步的项目的元数据;

S300:接收目标集群的位置信息,所述位置信息可以是目标集群的网页网址;

S400:根据所述目标集群的位置信息,将所述待同步的项目的元数据发送至所述目标集群的位置。

本发明提出了一种快速、准确地同步Kylin元数据的方法,通过步骤S100和S200获取到需要同步的Kylin元数据,通过步骤S300和步骤S400,将Kylin元数据同步到目标集群中。对于同样的Kylin业务需要在多个集群同时实现的需求,采用该方法,只需在一个集群进行手工创建、维护项目元数据,其它集群可以一键同步为同样状态,避免人工重复操作,在提高效率的同时,可以减少人为操作失误带来的排查、纠错成本。

上述各个步骤的编号仅为区分各个步骤,而非限定各个步骤的实施顺序。步骤S100~S400可以按照图1中示出的顺序进行实施,也可以调整各个步骤的执行顺序,例如,同时执行步骤S100和S300,获取元数据同步的全部信息,然后执行步骤S200和步骤S400等,也可以实现本发明的目的和效果,均属于本发明的保护范围之内。

Kylin元数据主要包括project项目信息,model模型信息,cube数据立方体信息,table表信息,cube segment数据立方体片段信息。

其中,Table指的是Hive中的存放数据的表。Kylin进行预计算的源数据来自Hive。数据库名称(Database name)+表名称(table name)可以唯一指定一个Hive数据仓库中的一个表。Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。SQL即结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。

Model指的是Hive数据库下某些表之间的关联关系,即数据模型,也可以是这个数据库下所有表之间的关联关系。

Cube指的是数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过数据立方体对数据进行分析,可以大大加快数据的查询效率。

Cube Segment(数据立方体片段)指的是针对源数据中的某一个片段,计算出来的数据立方体数据。通常数据仓库中的数据数量会随着时间的增长而增长,而Cube Segment也是按时间顺序来构建的。

如图2所示,在该实施例中,所述步骤S200:从待同步的Kylin元数据的存储路径中获取待同步的项目的元数据之后,还包括如下步骤:

S210:从所述待同步的项目的元数据中提取各个模型(model)名称;

S220:根据所述模型名称,从所述待同步的Kylin元数据的存储路径中获取各个模型的元数据;

S230:从所述待同步的项目的元数据中提取各个表名称;

S240:根据所述表名称,从所述待同步的Kylin元数据的存储路径中获取各个表的元数据。

在一具体实例中,所述步骤S200~S240可以采用如下方式具体实施:

S200:使用org.apache.kylin.common.persistence.ResourceTool(以下简称ResourceTool)获取(fetch)用户指定的项目的元数据,HBase(一个分布式的、面向列的开源数据库)存储路径为:/project/${project_name}.json,本地存储路径:${meta_local_path}/project/

S210:分析步骤S200获取的项目的元数据,提取其中包含的所有模型名称,并执行步骤S230:依次使用ResourceTool获取各个名称的元数据,HBase存储路径为/model_desc/${model}.json,本地存储路径:${meta_local_path}/model/

S240:分析第一步获取的project元数据,提取其中包含的所有Table名,并执行步骤S250:依次使用ResourceTool获取各table的元数据,HBase存储路径为/table/${table}.json,本地存储路径:${meta_local_path}/table/

如图2所示,在该实施例中,所述步骤S200:从所述待同步的Kylin元数据的存储路径中获取待同步的项目的元数据之后,还包括如下步骤:

S250:从所述待同步的项目的元数据中提取各个数据立方体的名称;

S260:根据所述数据立方体的名称,从所述待同步的Kylin元数据的存储路径中获取各个数据立方体的元数据;

S270:对于每个数据立方体,获取数据立方体的各个片段的元数据。

在该实施例中,所述步骤S270:获取数据立方体的所有片段的元数据,包括如下步骤:

S271:对于每个数据立方体,从所述数据立方体的元数据的描述字段中获取描述的名称;

S272:根据所述描述的名称从所述待同步的Kylin元数据的存储路径获取数据立方体的描述的元数据;

S273:从所述描述的元数据中提取片段的字段内容,根据所述片段的字段内容生成片段的元数据。

进一步地,在该实施例中,所述步骤S270:获取数据立方体的所有片段的元数据之后,还包括如下步骤:

S274:对所述片段的元数据进行筛选,去除构建片段时的日志数据和物理存储信息数据。

具体地,在一具体实例中,上述步骤S250~S270可以采用如下方式来具体实现:

S250:分析步骤S200获取的项目的元数据,提取其中包含的所有数据立方体的名称,并执行步骤S260:依次使用ResourceTool获取各个数据立方体的元数据,HBase存储路径为/cube/${cube}.json

S270:对于每个数据立方体,进行下面几步操作:

S271:根据元数据中的descriptor(描述)字段获得cube_desc名字,然后执行步骤S272:使用ResourceTool获取各个Cube desc的元数据,HBase存储路径为/cube_desc/${cube_desc}.json,本地存储路径:${meta_local_path}/cube_desc/

S273:提取segments(片段)字段内容,生成所有的数据立方体片段的元数据。本地存储路径:${meta_local_path}/cube_segment/

S274:处理cube元数据,去掉不需要的数据立方体片段信息,主要是之前构建时产生的历史数据。用于在目标集群导入后依照这些信息创建数据立方体片段。本地存储路径:${meta_local_path}/cube/。

经过以上步骤,待同步的项目中所有必要的元数据已经提取完毕。上述各步骤S200~S270中提取的元数据需要符合规定的目录结构。

如图3所示,在该实施例中,步骤S300:将所述待同步的项目的元数据发送至所述目标集群的位置之前,还包括如下步骤:

S281:接收数据库更名信息;

S282:根据所述数据库更名信息,修改所述表的元数据中的数据库名称,例如可以使用RenameDBName工具进行统一更名。

此外,在将所述元数据导入到所述目标集群之前,还可以包括如下步骤:

S290:检查目标Kylin集群中是否存在相同的项目名称,防止已有与现在要导入的元数据冲突的项目。如果已有相同的项目名称,则需要提醒用户,接收用户下一步指令,根据用户指令执行清理原项目的元数据或放弃此次导入。

执行所述步骤S300时,可以使用ResourceTool执行upload操作,输入参数为项目的元数据的提取后的存储路径,对于目标集群有密码的情况下,还需要预先获取目标集群的Kylin的密码。

在该实施例中,步骤S300:将所述待同步的项目的元数据发送至所述目标集群的位置之后,还包括如下步骤:

S310:依次为各个数据立方体更新签名。由于修改了表的数据库名,需要使用org.apache.kylin.cube.cli.CubeSignatureRefresher依次为每个cube更新签名。

在该实施例中,所述步骤S300:将所述待同步的项目的元数据发送至所述目标集群的位置之后,还包括如下步骤:

S320:请求Kylin构建接口,根据所述片段的元数据,依次为各个数据立方体提交片段的构建。具体地,步骤S320可以采用如下步骤执行:

S321:依次为每个数据立方体提交各个数据立方体片段的构建,直接请求Kylin构建接口:/api/cubes/${cube_name}/build,并记录构建ID。

S322:轮询上述所有构建ID,检查每个片段的构建状态。对于结果是FINISHED(结束)、ERROR(错误)、DISCARDED(丢弃)的构建,记录结果。如果不是上述状态,说明该片段正在构建中,等待并继续轮询至构建结束。

如图4所示,本发明实施例还提供一种元数据同步系统,应用于所述的元数据同步方法,所述系统包括:

信息采集模块M100,用于接收待同步的Kylin元数据的项目名称,以及接收目标集群的位置信息;

数据提取模块M200,用于从待同步的Kylin元数据的存储路径中获取待同步的项目的元数据;

数据导入模块M300,用于将所述待同步的项目的元数据发送至所述目标集群的位置。

本发明的元数据同步系统通过信息采集模块M100可以直接采集Kylin元数据的同步需求信息,具体地,包括待同步的Kylin元数据的存储路径和项目名称以及目标集群的位置信息,通过数据提取模块M200获取到需要同步的Kylin元数据,通过数据导入模块M300,将Kylin元数据同步到目标集群中。对于同样的Kylin业务需要在多个集群同时实现的需求,采用该方法,只需在一个集群进行手工创建、维护项目元数据,其它集群可以一键同步为同样状态,避免人工重复操作,在提高效率的同时,可以减少人为操作失误带来的排查、纠错成本。

其中,各个模块的功能可以采用上述元数据同步方法的具体实施方式来实现。例如,信息采集模块M100的功能可以采用上述步骤S100和S300的具体实施方式实现,数据提取模块M200的功能可以采用上述步骤S200的具体实施方式来实现,并且进一步可以执行上述步骤S210~S270以获取到完整的项目的元数据,数据导入模块M300的功能可以采用上述步骤S300的具体实施方式来实现,并且进一步可以执行上述步骤S281、S282、S290、S310和S320的步骤来完成元数据的完整导入和构建。

所述元数据同步方法和系统的程序可以由java和linux shell两种语言编写,执行时需要在类unix系统上部署有jdk/jre环境,另外需要有Kylin客户端。在源集群执行数据提取模块M200所对应的代码时,用户需要输入的参数有:待同步的项目名称和元数据本地存储路径。源集群根据项目名称确定元数据在源集群中的存储路径,数据提取模块M200将元数据从源集群中的存储路径中提取出来并存储到元数据本地存储路径中。

数据导入时,传输元数据到目标集群,用户需要填入数据库更名信息,然后执行执行数据导入模块M300所对应的代码。用户需要输入的参数有:目标Kylin集群的web url(网页地址),目标Kylin集群的密码以及待导入元数据的存储路径。数据导入模块M300用于将元数据从本地存储路径导入到目标集群中,并完成元数据构建。

本发明实施例还提供一种元数据同步设备,包括处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行所述的元数据同步方法的步骤。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。

下面参照图5来描述根据本发明的这种实施方式的电子设备600。图5显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,电子设备600以通用计算设备的形式表现。电子设备600的组合可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组合(包括存储单元620和处理单元610)的总线630、显示单元640等。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。

所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。

所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。

本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的元数据同步方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。

参考图6所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

综上所述,与现有技术相比,本发明所提供的元数据同步方法、系统、设备及存储介质具有下列优点:

本发明提出了一种快速、准确地同步Kylin元数据的方法,对于同样的Kylin业务需要在多个集群同时实现的需求,只需在一个集群进行手工创建、维护项目元数据,其它集群可以一键同步为同样状态,避免人工重复操作,在提高效率的同时,可以减少人为操作失误带来的排查、纠错成本。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

相关技术
  • 元数据同步方法、系统、设备及存储介质
  • 元数据节点集群的扩容方法、系统、设备和存储介质
技术分类

06120113083943