建模数据下载方法、装置、电子设备及计算机存储介质

阅读: 评论:0

著录项
  • CN201910525568.8
  • 20190618
  • CN110321335A
  • 20191011
  • 中国平安财产保险股份有限公司
  • 黄春旭
  • G06F16/21
  • G06F16/21 G06F16/242 G06F16/2458 G06F16/27

  • 广东省深圳市福田区益田路5033号平安金融中心12、13、38、39、40层
  • 广东(44)
  • 广州三环专利商标代理有限公司
  • 郝传鑫;熊永强
摘要
本申请提供了建模数据下载方法、装置、电子设备及计算机存储介质。所述方法包括:接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个目标建模子数据的查询编号;根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL;调用每个目标容器执行对应的目标查询SQL,从所述数据库映射表中获取所述目标建模数据。
权利要求

1.一种建模数据下载方法,其特征在于,应用于分布式系统中,所述分布式系统包括多个计算机节点,每个计算机节点部署多个容器,所述方法包括:

接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个所述目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个所述目标建模子数据的查询编号;

根据每个所述目标建模子数据的查询编号,获得每个所述目标建模子数据的目标查询SQL,其中,所述目标查询SQL包含条件参数,所述条件参数用于在数据库映射表中获取所述目标建模数据,所述数据库映射表存储于数据仓库,所述数据仓库位于与所述分布式系统不同的计算机节点上;

分别调用每个所述目标容器执行与所述目标容器对应的所述目标查询SQL,从所述数据库映射表中获取所述目标建模数据。

2.根据权利要求1所述的方法,其特征在于,在所述接收目标建模数据下载申请之前,所述方法还包括:

获取触发目标建模数据下载的触发请求,其中,所述触发请求是用户触发目标建模数据超链接后获得的,所述目标建模数据超链接以目标建模数据名称的形式展示在建模数据列表展示页中;

根据所述触发请求获取目标建模数据下载申请,其中,所述目标建模数据下载申请包含所述目标建模数据超链接对应的多个目标建模子数据的查询编号。

5.根据权利要求1所述的方法,其特征在于,在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之前,所述方法还包括:

获取每个所述目标建模子数据的目标文件格式;

所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL包括:

分别调用每个目标容器执行与所述目标容器对应的目标查询SQL,根据每个所述目标建模子数据的目标文件格式,获得对应所述目标文件格式的所述目标建模子数据。

3.根据权利求2所述的方法,其特征在于,在获取触发目标建模数据的触发请求之前,所述方法还包括:

在本地数据库中新建查询报表;

在所述查询报表中插入一行新建查询配置数据,其中,所述新建查询配置数据包括目标建模子数据的查询编号、目标建模子数据名称以及目标查询SQL。

4.根据权利求1所述的方法,其特征在于,在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之后,所述方法还包括:

将所述目标建模数据缓存在本地数据库中;

接收所述目标建模数据的下载请求;

从本地数据库中下载所述目标建模数据。

6.一种建模数据下载装置,其特征在于,应用于分布式系统中,所述分布式系统包括多个计算机节点,所述多个计算机节点中的每个计算机节点部署有多个容器,所述装置包括接收单元、获取单元以及调用单元,其中,

所述接收单元用于接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个所述目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个所述目标建模子数据的查询编号;

所述获取单元用于根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,其中,所述目标查询SQL包含条件参数,所述条件参数用于在数据库映射表中获取所述目标建模数据,所述数据库映射表存储于数据仓库中,所述数据仓库位于与所述分布式系统不同的计算机节点上;

所述调用单元用于分别调用每个所述目标容器执行与所述目标容器对应的所述目标查询SQL,从所述数据库映射表中获取所述目标建模数据。

8.根据权利要求6所述的装置,其特征在于,

所述获取单元还用于在在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之前,获取每个所述目标建模子数据的目标文件格式;

所述调用单元用于分别调用每个目标容器执行与所述目标容器对应的目标查询SQL,根据每个所述目标建模子数据的目标文件格式,获得对应所述目标文件格式的所述目标建模子数据。

7.根据权利求6所述的装置,其特征在于,所述装置还包括新建单元,

所述新建单元用于在接收目标建模数据下载申请之前,在本地数据库中新建查询报表;

所述新建单元用于在所述查询报表中插入一行新建查询配置数据,其中,所述新建查询配置数据包括目标建模子数据的查询编号、目标建模子数据名称以及目标查询SQL。

9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;所述存储器用于存储指令;所述处理器用于调用存储器中的指令,执行如上权利要求1至5中任一项所述方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至5任一项所述的方法。

说明书
技术领域

本申请涉及计算机领域,尤其涉及建模数据下载方法、装置、电子设备及计算机存储介质。

随着移动互联网的迅猛发展,网民人数和上网时长急剧增长,网站的后台架构也在不断的变化以应对日益庞大的访问需求。服务器架构的设计,从最初将Web服务和数据库服务等所有服务部署到一台物理服务器上,逐渐变为将多种应用分开部署的分布式架构服务器集。因此,软件应用程序的可移植性需求也在不断增大,容器技术逐步成为业界的发展热点,各主流云计算平台也无一例外地迅速提供了容器服务,容器集管理者Kubernetes作为容器应用的管理中心,对集内部所有容器的生命周期进行管理。

对于分布式系统来讲,在建模时,由于存在多个计算机结点,每个计算机结点可能包括多个容器,每个容器都需要建模数据进行建模,因此需要大量的数据传输,一般会将需要的建模数据统一从数据库中下载下来,再分配到各个对应的容器去建模,导致每次建模数据传输都比较困难。

本申请提供了建模数据下载方法、装置、电子设备及计算机存储介质。,用于解决建模数据下载速度慢、传输困难的问题。

第一方面,本申请提供了一种建模数据下载方法,应用于分布式系统中,所述分布式系统包括多个计算机节点,每个计算机节点部署多个容器,所述方法包括:

接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个所述目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个所述目标建模子数据的查询编号;

根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,其中,所述目标查询SQL包含条件参数,所述条件参数用于在数库映射表中获取所述目标建模数据,所述数据库映射表存储于数据仓库,所述数据仓库位于与所述分布式系统不同的计算机节点上;

分别调用每个所述目标容器执行与所述目标容器对应的所述目标查询SQL,从所述数据库映射表中获取所述目标建模数据。

可选地,在所述接收目标建模数据下载申请之前,所述方法还包括:

获取触发目标建模数据的触发请求,其中,其中,所述触发请求是用户触发目标建模数据超链接后获得的,所述目标建模数据超链接以目标建模数据名称的形式展示在建模数据列表展示页中;

根据所述触发请求获取目标建模数据下载申请,其中,所述目标建模数据下载申请包含所述目标建模数据超链接对应的多个目标建模子数据的查询编号。

可选地,在获取触发目标建模数据的触发请求之前,所述方法还包括:

在本地数据库中新建查询报表;

在所述查询报表中插入一行新建查询配置数据,其中,所述新建查询配置数据包括目标建模子数据的查询编号、目标建模子数据名称以及目标查询SQL。

可选地,在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之后,所述方法还包括:

将所述目标建模数据缓存在本地数据库中;

接收所述目标建模数据的下载请求;

从本地数据库中下载所述目标建模数据。

可选地,在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之前,所述方法还包括:

获取每个所述目标建模子数据的目标文件格式;

所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL包括:

分别调用每个目标容器执行与所述目标容器对应的目标查询SQL,根据每个所述目标建模子数据的目标文件格式,获得对应所述目标文件格式的所述目标建模子数据。

第二方面,提供了一种建模数据下载装置,其特征在于,应用于分布式系统中,所述分布式系统包括多个计算机节点,所述多个计算机节点中的每个计算机节点部署有多个容器,所述装置包括接收单元、获取单元以及调用单元,其中,

所述接收单元用于接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个所述目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个所述目标建模子数据的查询编号;

所述获取单元用于根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,其中,所述目标查询SQL包含条件参数,所述条件参数用于在数据库映射表中获取所述目标建模数据,所述数据库映射表存储于数据仓库中,所述数据仓库位于与所述分布式系统不同的计算机节点上;

所述调用单元用于分别调用每个所述目标容器执行与所述目标容器对应的所述目标查询SQL,从所述数据库映射表中获取所述目标建模数据。

可选地,所述装置还包括新建单元,

所述新建单元用于在接收目标建模数据下载申请之前,在本地数据库中新建查询报表;

所述新建单元用于在所述查询报表中插入一行新建查询配置数据,其中,所述新建查询配置数据包括目标建模子数据的查询编号、目标建模子数据名称以及目标查询SQL。

可选地,所述获取单元还用于在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之前,获取每个所述目标建模子数据的目标文件格式;

所述调用单元用于分别调用每个目标容器执行与所述目标容器对应的目标查询SQL,根据每个所述目标建模子数据的目标文件格式,获得对应所述目标文件格式的所述目标建模子数据。

第三方面,提供了一种电子设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面所述的方法

第四方面,提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。

基于本申请提供的建模数据下载方法、装置、电子设备及计算机存储介质,通过接收目标建模数据下载申请,根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,从而调用每个目标容器执行对应的目标查询SQL,从所述数据库映射表中获取所述目标建模数据。使得分布式系统中的多个容器可以同时下载建模数据,与统一将建模数据下载后依次分配给各个容器的方法相比,下载速度大大提高,节省了磁盘空间,提高了开发人员的工作效率。

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请提供的一种建模数据下载方法的流程示意图;

图2是本申请提供的一种分布是系统结构示意图;

图3是本申请提供的一种建模数据下载方法的流程示意图;

图4是本申请提供的一种建模数据下载装置的结构示意图;

图5是本申请提供的一种电子设备结构示意框图。

下面通过具体实施方式结合附图对本申请作进一步详细说明。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或描述,这是为了避免本申请的核心部分被过多的描述所淹没。对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

应当理解,当在本说明书和所附权利要求书中使用术语时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。需要说明的是,在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

图1是本申请提供的一种建模数据下载方法的流程示意图。由图1可知,本申请提供的建模数据的下载方法包括以下步骤:

S101:接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个所述目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个所述目标建模子数据的查询编号。

在本申请实施例中,本申请提供的建模数据下载方法应用于分布式系统中,所述系统包括多个计算机节点,每个计算机节点部署多个容器。应理解,分布式系统是由一组通过网络进行通信、为了完成共同的任务和协调工作的计算机节点组成的系统。分布式系统可以利用更多的计算机去处理单个计算机无法完成的计算和存储任务。因此,分布式系统由于节点多,每个任务需要分发到各个计算机节点,每个节点存储一部分数据,也就是说,采用分片(partition)技术。但是不一样的计算机可能使用不一样的操作系统,运行多个操作系统需要更多的资源,而容器只使用一个宿主操作系统(Linux)的内核,就可以分别独立的运行多个程序,可以向虚拟机一样工作却不需要多一个操作系统的开销。例如,图2是本申请提供的一种分布式系统,该分布式系统可以有多个计算机节点,例如图2中的计算机节点A、B、C、D、E,每个计算机节点可以有多个容器,例如图2中的计算节点A包含两个容器A1以及A2。应理解,每个容器镜像中包括应用程序和所有相关的依赖项,与其他容器相互独立且隔离。而分布式系统的管理者可以是如图2所示的容器协调引擎,用于将计算或存储任务分发给各个容器。因此,当分布式系统中的容器协调引擎接收建模数据下载申请时,可能是很多个应用程序需要建模数据进行建模操作,也就是说,包括很多个容器的建模数据下载申请,例如承载业务A的容器A1需求目标建模子数据a1,承载业务B的容器B需求目标建模子数据b1,那么容器协调引擎接收建模数据下载申请可以是需求目标建模子数据a1以及目标建模子数据b1的下载申请。应理解,上述举例以及图2仅用于说明,本申请提供的建模数据下载方法应用的分布式系统,可以包含更多的计算机节点,每个计算机节点可以包含更多的容器,本申请不作具体限定。

S102:根据每个所述目标建模子数据的查询编号,获得每个所述目标建模子数据的目标查询SQL,其中,所述查询SQL包含条件参数,所述条件参数用于在数据库映射表中获取所述目标建模数据,所述数据库映射表存储于数据仓库,所述数据仓库位于与所述分布式系统不同的计算机节点上

在本申请实施例中,所述查询SQL包含在数据仓库工具(hive)的数据库映射表中获取所述目标建模数据所需的条件参数。可以理解的是,建模数据下载申请中包含了多个容器需求的建模数据下载申请,因此需要根据每个容器需要的建模数据下载申请获取相应的目标查询SQL,仍以上述例子为例,承载业务A的容器A1需求建模数据a1,承载业务B的容器B需求建模数据b1,那么根据建模数据a1获取目标查询SQL,根据建模数据b1获取目标查询SQL。其中,所述目标查询SQL是用于在数据仓库工具hive的数据库映射表中查询数据用的,可以理解的是,分布式系统包括多个计算机节点,目标建模数据存储于不同计算机的不同数据库中,如果直接查询十分不方便,因此可以在hive工具中创建建模数据表,将每个表的数据存储在分布式文件系统HDFS中,在需要下载数据时,只需要在预先创建的建模数据表中查询自己想要的数据,就可以直接下载目标建模数据。应理解,hive在加载数据的过程中不会对数据库中的数据进行任何修改,只是将数据移动到HDFS中hive设定的目录下,所有数据都是在加载过程中确定的,也进一步保证了数据的安全性。并且,在hive中查询数据时使用的SQL语言十分简单,同时也可以减少开发人员的学习成本。应理解,上述举例仅用于说明,并不能构成具体限定。

在本申请实施例中,在所述接收目标建模数据下载申请之前,所述方法还包括:获取触发目标建模数据下载的触发请求,其中,所述触发请求是用户触发目标建模数据超链接后获得的,所述目标建模数据超链接以目标建模数据名称的形式展示在建模数据列表展示页中;根据所述触发请求获取目标建模数据下载申请,其中,所述目标建模数据下载申请包含所述目标建模数据超链接对应的多个目标建模子数据的查询编号。也就是说,建模数据列表展示页中每一行记录了一个预先设置好的建模数据的相关信息,当建模人员需要对某一项目进行建模时,点击所需的建模数据标题名称触发超链接,即可触发所需要的建模数据的下载请求。操作简单,无需每次下载建模数据都要填入SQL,提高了建模人员的工作效率。

在本申请实施例中,在获取触发目标建模数据的触发请求之前,所述方法还包括:在本地数据库中新建查询报表;在所述查询报表中插入一行新建查询配置数据,其中,所述新建查询配置数据包括目标建模子数据的查询编号、目标建模子数据名称以及目标查询SQL。使得用户触发所述建模数据下载链接后,可以直接获得每个目标建模子数据对应的查询编码,根据查询编码可以直接获得查询所述目标建模子数据的目标查询SQL。具体地,当用户触发下载链接后,假设获得其中一目标建模子数据的查询编号为121,那么处理器可通过执行语句:select id,sql from sqlTable where id=121,从sql table(查询报表)中直接获取与查询编号121对应的目标查询SQL,执行所述目标查询SQL即可下载所述目标建模子数据。

在本申请实施例中,所述条件参数可以是所述目标建模数据所在的库名以及字段名称,例如,需要获取的目标建模数据是dw库的topic_order表的deal_id一列,那么目标查询SQL具体可以是select deal_id from dw.topic_order,如果需要获取的目标建模数据是位于dw库的topic_order表满足partition_pay_date='2018-12-22'的deal_id这一列,那么目标查询SQL具体可以是的select deal_id from dw.topic_order wherepartition_pay_date='2018-12-22',其中,dw为库名,deal_id、topic_order、partition_pay_date='2018-12-22'是字段名。应理解,上述举例仅用于说明,并不能构成具体限定。

在本申请实施例中,所述目标查询SQL还可以是建模人员编写的自定义SQL。也就是说,建模人员可以直接触发建模数据下载申请,使得容器协调引擎获取建模数据下载申请并生成对应的目标查询SQL,还可以是建模人员直接自行编写自定义SQL进行目标建模数据的下载,其中,自定义SQL可以是建模人员手动编写的,可以是从建模数据查询页面选择库名和字段自动生成的。,仍以上述例子为例,建模人员需要查询需要获取的目标建模数据位于dw库的topic_order表满足partition_pay_date='2018-12-22'的deal_id这一列,那么建模人员可以直接编写自定义SQL:select deal_id from dw.topic_order wherepartition_pay_date='2018-12-22',或者,建模人员在一种建模数据库查询页面中,在库名搜索框中选择dw库,在表名搜索框中选择topic_order,在字段名搜索框中选择deal_id,条件为partition_pay_date='2018-12-22',从而自动生成自定义SQL:select deal_id,from dw.topic_order where partition_pay_date='2018-12-22',再或者,建模人员直接点击建模数据库中的目标建模数据名称,触发目建模数据下载超链接,根据超链接获得目标建模数据下载申请,从何获得查询所述目标建模数据所需的条件信息,生成用于查询所述目标建模数据的目标查询SQL。应理解,上述举例仅用于说明,并不能构成具体限定。

S103:分别调用每个所述目标容器执行与所述目标容器对应的所述目标查询SQL,从所述数据库映射表中获取所述目标建模数据。

在本申请实施例中,容器是一个软件的轻量级独立可执行的软件包,容器将软件与其周围环境隔离开来,多个容器可以在同一个机器上运行,也可以在不同的机器上运行。应理解,本申请提供的建模数据下载方法的网络环境是分布式系统环境,也就是说,由分布于多个计算机结点上的若干个容器组成,因此,不同的容器可能位于同一个计算机,也可能位于不同的计算机,不同的容器需要的建模数据不同,传统的方法进行建模数据下载时,会将所有的建模数据统一下载下来,系统将建模数据分配给需要的容器,这样不仅传输量太大,下载速度缓慢,还需要提前预留大量的磁盘空间,造成资源浪费。本申请提供的建模数据方法,每个容器下载自己需要的建模数据,也就是说,目标容器执行目标查询SQL,使得不同计算机上的不同容器同时下载建模数据,下载速度大大提高,同时节省了大量的磁盘空间。优选地,所述目标容器可以是使用Kubernetes(K8S)创建的集管理容器(Docker),可以理解的是,K8S是自动化容器操作的开源平台,拥有部署容器、调度容器和节点集间扩展的功能,对于传统的使用插件和脚本来安装应用的部署方式来说,K8S通过部署容器方式实现应用,在每个容器之间相互隔离,每个容器有自己的文件系统,区分计算资源,能够在不同云、不同版本操作系统间进行迁移。能够让部署容器化的应用更加简单高效。应理解,K8S只是本身提供的一种实现方式,本申请还可以使用其他拥有部署容器、调度容器功能的自动化容器操作平台,本申请不做具体限定。

例如,图3是本申请提供的一种建模数据下载方法的流程示意图,由图3可知,首先接收目标建模数据的触发请求,其中,所述目标建模数据包含多个容器所需要的目标建模子数据,例如,容器1需要目标建模子数据1,容器2需要目标建模子数据2,容器N需要目标建模子数据N等等,每个目标建模子数据都对应一个查询编号;根据查询编号,在预先建立的查询报表中,获取到每个目标建模子数据的目标查询SQL,例如,目标建模子数据1的目标查询SQL为SQL1,目标建模子数据2的目标查询SQL为SQL2,目标建模子数据N的目标查询SQL为SQLN等等;分别调用目标容器去下载目标查询SQL,例如,调用容器A执行SQL1,调用容器2执行SQL2,调用容器N执行SQLN等等,使得不同计算机上的不同容器同时下载建模数据,下载速度大大提高,同时节省了大量的磁盘空间。

在本申请实施例中,在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之后,所述方法还包括:将所述目标建模数据缓存在本地数据库中;接收所述目标建模数据的下载请求;从本地数据库中下载所述目标建模数据。具体地,生成的建模数据也可以选择保存到本地的hadoop上面,以便下一次建模时可以直接调用,节省了下载时间。

在本申请实施例中,在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之前,所述方法还包括:获取每个所述目标建模子数据的目标文件格式;所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL包括:分别调用每个目标容器执行与所述目标容器对应的目标查询SQL,根据每个所述目标建模子数据的目标文件格式,获得对应所述目标文件格式的所述目标建模子数据。也就是说,目标容器执行所述目标查询SQL后,可以获得目标建模数据,hive中的数据是直接从数据库中读取的数据,所述目标查询SQL用于从hive中查询数据映射表并下载数据,因此下载的数据格式可能并不是建模文件适用的数据格式。因此,所述目标容器可以将目标建模数据转换为需要的格式。具体的,建模人员可以在触发下载申请时,选择需要的目标建模数据格式,或者是目标容器在下载好目标建模数据后,自动生成建模数据文件。

上述方法中,通过接收目标建模数据下载申请,根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,从而调用每个目标容器执行对应的目标查询SQL,从所述数据库映射表中获取所述目标建模数据。使得分布式系统中的多个容器可以同时下载建模数据,与统一将建模数据下载后依次分配给各个容器的方法相比,下载速度大大提高,节省了磁盘空间,提高了开发人员的工作效率。

图4是本申请提供的一种建模数据下载装置的结构示意图。由图4可知,所述装置包括:接收单元410、获取单元420、调用单元430、触发单元440以及新建单元450,其中,

所述接收单元410用于接收目标建模数据下载申请,其中,所述目标建模数据是多个目标容器所需的建模数据,所述目标建模数据由多个目标建模子数据组成,每个所述目标建模子数据对应一个目标容器,所述目标建模数据下载申请包含每个所述目标建模子数据的查询编号;

所述获取单元420用于根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,其中,所述目标查询SQL条件参数,所述条件参数用于在数据库映射表中获取所述目标建模数据,所述数据库映射表存储于数据仓库中,所述数据仓库位于与所述分布式系统不同的计算机节点上;

所述调用单元430用于分别调用每个所述目标容器执行与所述目标容器对应的所述目标查询SQL,从所述数据库映射表中获取所述目标建模数据。

在本申请实施例中,本申请提供的建模数据下载装置应用于分布式系统中,所述系统包括多个计算机节点,每个计算机节点部署多个容器。应理解,分布式系统是由一组通过网络进行通信、为了完成共同的任务和协调工作的计算机节点组成的系统。分布式系统可以利用更多的计算机去处理单个计算机无法完成的计算和存储任务。因此,分布式系统由于节点多,每个任务需要分发到各个计算机节点,每个节点存储一部分数据,也就是说,采用分片(partition)技术。但是不一样的计算机可能使用不一样的操作系统,运行多个操作系统需要更多的资源,而容器只使用一个宿主操作系统(Linux)的内核,就可以分别独立的运行多个程序,可以向虚拟机一样工作却不需要多一个操作系统的开销。例如,图2是本申请提供的一种分布式系统,该分布式系统可以有多个计算机节点,例如图2中的计算机节点A、B、C、D、E,每个计算机节点可以有多个容器,例如图2中的计算节点A包含两个容器A1以及A2。应理解,每个容器镜像中包括应用程序和所有相关的依赖项,与其他容器相互独立且隔离。而分布式系统的管理者可以是如图2所示的容器协调引擎,用于将计算或存储任务分发给各个容器。因此,当分布式系统中的容器协调引擎接收建模数据下载申请时,可能是很多个应用程序需要建模数据进行建模操作,也就是说,包括很多个容器的建模数据下载申请,例如承载业务A的容器A1需求目标建模子数据a1,承载业务B的容器B需求目标建模子数据b1,那么容器协调引擎接收建模数据下载申请可以是需求目标建模子数据a1以及目标建模子数据b1的下载申请。应理解,上述举例以及图2仅用于说明,本申请提供的建模数据下载方法应用的分布式系统,可以包含更多的计算机节点,每个计算机节点可以包含更多的容器,本申请不作具体限定。

在本申请实施例中,所述目标查询SQL包含在数据仓库工具(hive)的数据库映射表中获取所述目标建模数据所需的条件参数。可以理解的是,建模数据下载申请中包含了多个容器需求的建模数据下载申请,因此需要根据每个容器需要的建模数据下载申请获取相应的目标查询SQL,仍以上述例子为例,承载业务A的容器A1需求建模数据a1,承载业务B的容器B需求建模数据b1,那么根据建模数据a1获取目标查询SQL,根据建模数据b1获取目标查询SQL。其中,所述目标查询SQL是用于在数据仓库工具hive的数据库映射表中查询数据用的,可以理解的是,分布式系统包括多个计算机节点,建模数据存储于不同计算机的不同数据库中,如果直接查询十分不方便,因此可以在hive工具中创建建模数据表,将每个表的数据存储在分布式文件系统HDFS中,在需要下载数据时,只需要在预先创建的建模数据表中查询自己想要的数据,就可以直接下载目标建模数据。应理解,hive在加载数据的过程中不会对数据库中的数据进行任何修改,只是将数据移动到HDFS中hive设定的目录下,所有数据都是在加载过程中确定的,也进一步保证了数据的安全性。并且,在hive中查询数据时使用的SQL语言十分简单,同时也可以减少开发人员的学习成本。应理解,上述举例仅用于说明,并不能构成具体限定。

在本申请实施例中,所述装置还包括触发单元440,所述触发单元440用于在根据所述报表查询请求中的报表编码获取目标查询SQL之前,获取触发目标建模数据下载的触发请求,其中,所述触发请求是用户触发目标建模数据超链接后获得的,所述目标建模数据超链接以目标建模数据名称的形式展示在建模数据列表展示页中;根据所述触发请求获取目标建模数据下载申请,其中,所述目标建模数据下载申请包含所述目标建模数据超链接对应的多个目标建模子数据的查询编号。也就是说,建模数据列表展示页中每一行记录了一个预先设置好的建模数据的相关信息,当建模人员需要对某一项目进行建模时,点击所需的建模数据标题名称触发超链接,即可触发所需要的建模数据的下载请求。操作简单,无需每次下载建模数据都要填入SQL,提高了建模人员的工作效率。

在本申请实施例中,所述装置还包括新建单元450,所述新建单元450用于在接收目标建模数据下载申请之前,在本地数据库中新建查询报表;所述新建单元450用于在所述查询报表中插入一行新建查询配置数据,其中,所述新建查询配置数据包括目标建模子数据的查询编号、目标建模子数据名称以及目标查询SQL。使得用户触发所述建模数据下载链接后,可以直接获得每个目标建模子数据对应的查询编码,根据查询编码可以直接获得查询所述目标建模子数据的目标查询SQL。具体地,当用户触发下载链接后,假设获得其中一目标建模子数据的查询编号为121,那么处理器可通过执行语句:select id,sql fromsqlTable where id=121,从sql table(查询报表)中直接获取与查询编号121对应的目标查询SQL,执行所述目标查询SQL即可下载所述目标建模子数据。

在本申请实施例中,所述条件参数可以是所述目标建模数据所在的库名以及字段名称,例如,需要获取的目标建模数据是dw库的topic_order表的deal_id一列,那么目标查询SQL具体可以是select deal_id from dw.topic_order,如果需要获取的目标建模数据是位于dw库的topic_order表满足partition_pay_date='2018-12-22'的deal_id这一列,那么目标查询SQL具体可以是的select deal_id from dw.topic_order wherepartition_pay_date='2018-12-22',其中,dw为库名,deal_id、topic_order、partition_pay_date='2018-12-22'是字段名。应理解,上述举例仅用于说明,并不能构成具体限定。

在本申请实施例中,所述目标查询SQL还可以是建模人员编写的自定义SQL。也就是说,建模人员可以直接触发建模数据下载申请,使得容器协调引擎获取建模数据下载申请并生成对应的目标查询SQL,还可以是建模人员直接自行编写自定义SQL进行目标建模数据的下载,其中,自定义SQL可以是建模人员手动编写的,可以是从建模数据查询页面选择库名和字段自动生成的。,仍以上述例子为例,建模人员需要查询需要获取的目标建模数据位于dw库的topic_order表满足partition_pay_date='2018-12-22'的deal_id这一列,那么建模人员可以直接编写自定义SQL:select deal_id from dw.topic_order wherepartition_pay_date='2018-12-22',或者,建模人员在一种建模数据库查询页面中,在库名搜索框中选择dw库,在表名搜索框中选择topic_order,在字段名搜索框中选择deal_id,条件为partition_pay_date='2018-12-22',从而自动生成自定义SQL:select deal_id,from dw.topic_order where partition_pay_date='2018-12-22',再或者,建模人员直接点击建模数据库中的目标建模数据名称,触发目建模数据下载超链接,根据超链接获得目标建模数据下载申请,从何获得查询所述目标建模数据所需的条件信息,生成用于查询所述目标建模数据的目标查询SQL。应理解,上述举例仅用于说明,并不能构成具体限定。

在本申请实施例中,容器是一个软件的轻量级独立可执行的软件包,容器将软件与其周围环境隔离开来,多个容器可以在同一个机器上运行,也可以在不同的机器上运行。应理解,本申请提供的建模数据下载方法的网络环境是分布式系统环境,也就是说,由分布于多个计算机结点上的若干个容器组成,因此,不同的容器可能位于同一个计算机,也可能位于不同的计算机,不同的容器需要的建模数据不同,传统的方法进行建模数据下载时,会将所有的建模数据统一下载下来,系统将建模数据分配给需要的容器,这样不仅传输量太大,下载速度缓慢,还需要提前预留大量的磁盘空间,造成资源浪费。本申请提供的建模数据方法,每个容器下载自己需要的建模数据,也就是说,目标容器执行目标查询SQL,通过调用不同容器同时下载到不同计算机上,多个计算机同时下载建模数据,使得下载速度大大提高,同时节省了大量的磁盘空间。优选地,所述目标容器可以是使用Kubernetes(K8S)创建的集管理容器(Docker),可以理解的是,K8S是自动化容器操作的开源平台,拥有部署容器、调度容器和节点集间扩展的功能,对于传统的使用插件和脚本来安装应用的部署方式来说,K8S通过部署容器方式实现应用,在每个容器之间相互隔离,每个容器有自己的文件系统,区分计算资源,能够在不同云、不同版本操作系统间进行迁移。能够让部署容器化的应用更加简单高效。应理解,K8S只是本身提供的一种实现方式,本申请还可以使用其他拥有部署容器、调度容器功能的自动化容器操作平台,本申请不做具体限定。

例如,图3是本申请提供的一种建模数据下载方法的流程示意图,由图3可知,首先接收目标建模数据的触发请求,其中,所述目标建模数据包含多个容器所需要的目标建模子数据,例如,容器1需要目标建模子数据1,容器2需要目标建模子数据2,容器N需要目标建模子数据N等等,每个目标建模子数据都对应一个查询编号;根据查询编号,在预先建立的查询报表中,获取到每个目标建模子数据的目标查询SQL,例如,目标建模子数据1的目标查询SQL为SQL1,目标建模子数据2的目标查询SQL为SQL2,目标建模子数据N的目标查询SQL为SQLN等等;分别调用目标容器去下载目标查询SQL,例如,调用容器A执行SQL1,调用容器2执行SQL2,调用容器N执行SQLN等等,使得不同计算机上的不同容器同时下载建模数据,下载速度大大提高,同时节省了大量的磁盘空间。

在本申请实施例中,所述调用单元430还用于在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之后,将所述目标建模数据缓存在本地数据库中;所述接收单元410还用于接收所述目标建模数据的下载请求;所述调用单元430还用于从本地数据库中下载所述目标建模数据。具体地,生成的建模数据也可以选择保存到本地的hadoop上面,以便下一次建模时可以直接调用,节省了下载时间。

在本申请实施例中,所述获取单元420还用于在所述分别调用每个目标容器执行与所述目标容器对应的所述目标查询SQL之前,获取每个所述目标建模子数据的目标文件格式;所述调用单元430还用于分别调用每个目标容器执行与所述目标容器对应的目标查询SQL,根据每个所述目标建模子数据的目标文件格式,获得对应所述目标文件格式的所述目标建模子数据。也就是说,目标容器执行所述目标查询SQL后,可以获得目标建模数据,hive中的数据是直接从数据库中读取的数据,所述目标查询SQL用于从hive中查询数据映射表并下载数据,因此下载的数据格式可能并不是建模文件适用的数据格式。因此,所述目标容器可以将目标建模数据转换为需要的格式。具体的,建模人员可以在触发下载申请时,选择需要的目标建模数据格式,或者是目标容器在下载好目标建模数据后,自动生成建模数据文件。

上述装置中,通过接收目标建模数据下载申请,根据每个所述目标建模子数据的查询编号,获得每个目标建模子数据的目标查询SQL,从而调用每个目标容器执行对应的目标查询SQL,从所述数据库映射表中获取所述目标建模数据。通过上述装置,使得分布式系统中的多个容器可以同时下载建模数据,与统一将建模数据下载后依次分配给各个容器的方法相比,下载速度大大提高,节省了磁盘空间,提高了开发人员的工作效率。

参见图5,图5是本申请提供的一种电子设备的结构示意图。如图所示的本实施例中的电子设备可以包括:一个或者多个处理器511、存储器512和通信接口513。其中,处理器511、存储器512和通信接口513之间可以通过总线514连接。

处理器511包括一个或者多个通用处理器,其中,通用处理器可以是能够处理电子指令的任何类型的设备,包括中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、微处理器、微控制器、主处理器、控制器以及专用集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(DigitalSignal Processor,DSP)、可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器511用于执行存储器512存储的程序指令。

存储器512可以包括易失性存储器,例如随机存取存储器(Random AccessMmemory,RAM);存储器也可以包括非易失性存储器,例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-StateDrive,SSD),存储器还可以包括上述种类的存储器的组合。存储器512可以采用集中式存储,也可以采用分布式存储,此处不作具体限定。可以理解的是,存储器512用于存储计算机程序,例如:计算机程序指令等。在本申请实施例中,存储器512可以向处理器511提供指令和数据。

通信接口513可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他计算机设备或用户进行通信。当通信接口513为有线接口时,通信接口513可以采用网络通讯协议(Transmission Control Protocol/InternetProtocol,TCP/IP)之上的协议族,例如,远程函数调用(Remote Function Call,RFC)协议、简单对象访问协议(Simple Object Access Protocol,SOAP)协议、简单网络管理协议(Simple Network Management Protocol,SNMP)、公共对象请求代理体系结构协议(CommonObject Request Broker Architecture,CORBA)以及分布式协议等等。当通信接口513为无线接口时,可以根据全球移动通信系统(Global System for Mobile Communication,GSM)或者码分多址(Code Division Multiple Access,CDMA)标准利用蜂窝通信,因此包括用于数据传输的无线调制解调器、电子处理设备、一个或多个数字存储器设备以及双天线。

在本申请实施例中,处理器511、存储器512、通信接口513和总线514可执行本申请实施例提供的建模数据下载方法的任一实施例中所描述的实现方式,在此不再赘述。

在本申请的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现本申请提供的建模数据下载方法的任一实施例中所描述的实现方式,在此不再赘述。

所述计算机可读存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法及装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

本文发布于:2023-04-14 14:35:28,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/87220.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图