一种自动优化表数据结构布局的方法、系统及设备与流程
未命名
08-15
阅读:150
评论:0
1.本技术涉大数据及数据湖技术领域:
:,尤其涉及一种自动优化表数据结构布局的方法、系统及设备。
背景技术:
::2.目前iceberg的compact服务需要基于表,需要手动调用spark的存储过程运行。在实际使用场景中iceberg中的表几百上千,甚至到万级以上,这样必然会带来巨大的运维成本;另外,在调用spark存储过程运行compact任务时,无法根据表当前的情况进行计算单元的设置,很可能会出现小表使用了很多的计算单元造成资源浪费,或者大表只给了很小的资源会导致任务运行时长很长,导致查询效率低下,甚至最终失败的情况,在运行compact任务时,只能通过手动指定集群来进行资源隔离,无法根据catalog、库甚至表等自动隔离。3.即现有技术中,在使用compact任务对表结构进行优化时,运维成本过高、查询性能达不到预期效果,导致整体运行效率低。技术实现要素:4.为至少在一定程度上克服相关技术中在使用compact任务对表结构进行优化时,运维成本过高、查询性能达不到预期效果,导致整体运行效率低的问题,本技术提供一种自动优化表数据结构布局的方法、系统及设备。5.本技术的方案如下:第一方面,本技术提供一种自动优化表数据结构布局的方法,所述方法包括:获取待优化资源信息;利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与所述隔离资源的结果;利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务;利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。6.进一步地,所述利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与所述隔离资源的结果,包括:判断所述优化资源信息是否满足第一预设条件;若满足,则通过k8s提供的apiclient函数生成namespace;对所述namespace进行资源配额并配置当前条件下最大可用的cpu和当前条件下最大可用的内存,实现资源配置;利用所述资源配置的结果,绑定所述k8s下所述namespace与数据湖iceberg下的catalog之间一对一的关联关系,得到iceberg表的元数据信息与所述隔离资源的结果;其中,所述第一预设条件为:所述优化资源信息不存在于相关后台且所述优化资源信息满足k8s资源需求。7.进一步地,所述利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务,包括:利用所述隔离资源的结果,获取所述数据湖iceberg表的运行状态信息;利用所述数据湖iceberg表的运行状态信息,获取相关运行状态因子,所述相关运行状态因子包括:任务类型因子、小文件数量因子、deletefiles数量因子、新增快照因子、新增数据因子;利用所述相关运行状态因子,判断当前是否需要创建相关优化运维任务;若所述相关运行状态因子的阈值数量满足第二预设条件,则创建相对应的优化运维任务;对所述优化运维任务进行优先级调度。8.进一步地,所述利用所述隔离资源的结果,获取所述数据湖iceberg表的运行状态,包括:利用所述隔离资源的结果,通过数据湖iceberg下的catalogmanager函数扫描catalog下的数据库和表的相关信息,获取表的存储路径后;利用获取的所述表的存储路径,调用iceberg的api,获取所述数据湖iceberg表的运行状态信息;其中,所述数据湖iceberg表的运行状态信息,包括:表具体的快照信息、快照下的文件信息、删除文件信息和记录数信息。9.进一步地,所述若所述相关运行状态因子的阈值数量满足第二预设条件,则创建相对应的优化运维任务,包括:若当前所述数据湖iceberg表中存在新增快照因子,且总的快照数据超过后台预先设定的第一快照阈值,且当前任务队列中没有创建与其对应的清理任务,则创建相应的清理任务;若当前所述数据湖iceberg表中存在新增数据因子,且小文件数量因子或deletefiles数量因子超过后台预先设定的第二新增因子阈值,且当前任务队列中没有创建与其对应的合并任务,则创建相应的合并任务;若当前所述数据湖iceberg表中存在新增数据因子,且小文件数量因子或deletefiles数量因子超过后台预先设定的第二新增因子阈值,且新增数据因子在总数据量的占比超过了后台预先设定的第三新增因子阈值,且当前任务队列中没有创建与其对应的排序任务,则创建相应的排序任务。10.进一步地,所述对所述优化运维任务进行优先级调度,包括:对所述优化运维任务进行打分;按照打分的结果由高到低生成任务优先级,通过所述任务优先级执行所述优化运维任务;其中,合并任务、排序任务的优先级起始得分高于清理任务,根据快照数据量梯度增加所述清理任务的优先级;根据deletefiles数量因子和小文件数量因子分别增加所述合并任务和所述排序任务的优先级。11.进一步地,所述利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果之前,还包括:利用所述隔离资源的结果以及自动生成优化任务的结果,通过绑定的catalog的优化资源个数生成任务获取线程;利用所述任务获取线程,判断当前所述catalog下是否存在可用资源;若存在,则根据任务队列中的优先级获取待运行任务;其中,如果优先级相同,则依据运行任务的创建时间作为执行标准,创建时间早的先执行。12.进一步地,所述利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果,包括:利用所述优化任务的相关信息,获取优化任务的优化参数,所述优化参数,包括:最大的小文件数量、最小文件的大小、最大文件的大小、排序字段、删除文件阈值、快照保存时间;利用所述优化任务的优化参数,判断是否满足资源集群的需求;若满足,则提交所述优化任务到所述资源集群并通过k8ssparkoperator设置spark任务的资源;通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。13.第二方面,本技术提供一种自动优化表数据结构布局的系统,所述系统包括:获取模块,用于获取待优化资源信息;资源隔离模块,用于利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与隔离资源的结果;数据处理模块,用于利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务;执行模块,用于利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。14.第三方面,本技术提供一种自动优化表数据结构布局的设备,所述设备包括:存储器,其上存储有可执行程序;处理器,用于执行所述存储器中的所述可执行程序,以实现上述中任一项所述方法的步骤。15.本技术提供的技术方案可以包括以下有益效果:本技术通过获取待优化资源信息;利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到资源隔离的结果;利用所述隔离资源的结果,自动生成优化任务;运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。本技术通过优化任务这一步骤实现表优化可以减少表的小文件个数、删除文件个数,通过对表结构进行了重写,可以提升表的查询性能;同时在进行优化任务中的表优化时可以通过任务生成规则、打分规则自动生成表优化的资源设置,无需用户关心表的小文件个数、删除文件个数,可以提升效率,通过k8s与数据湖iceberg表之间进行资源绑定,自动生成优化任务并执行,在dataops的场景中消除优化者的角色,会在后台持续进行文件结构优化操作,最大限度减少运维工作量,减少运维成本,提升运维效率。16.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。附图说明17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。18.图1是本技术一个实施例提供的一种自动优化表数据结构布局的方法流程示意图;图2是本技术另一个实施例提供的一种动优化表数据结构布局的优化资源管理的流程示意图;图3是本技术又一个实施例提供的一种动优化表数据结构布局的运行优化任务的流程示意图;图4是本技术一个实施例提供的一种自动优化表数据结构布局的系统组成流程示意图;图5是本技术一个实施例提供的一种自动优化表数据结构布局的设备组成流程示意图。具体实施方式19.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。20.iceberg是重新定义了数据的元数据组织的开放表格式,它是介于上层计算引擎和底层存储格式之间的一个中间层,可以用于大型数据分析场景。iceberg向计算引擎提供统一的类sql的语义,但它的底层仍然是parquet、orc等存储格式。21.管理iceberg数据湖的关键权衡之一是在写吞吐量和查询性能之间进行选择。为了获得更好的写吞吐量,更低的数据可见延迟性,采用的方式就是将传入数据写入更小的数据文件。这将大大提高计算引擎的并行性从而提高数据摄取速度。但是,这种方案会创建许多小文件,而小文件太多会降低查询性能。此外,对于包括hdfs在内的许多文件系统来说,当存在很多小文件时,文件本身的性能也会下降。为了能够支持允许快速插入而不影响查询性能的架构,iceberg开发了“compact”服务来重写数据结构布局,将小文件合并成大文件,可以在不影响写吞吐量的情况下提升查询效率。22.目前iceberg的compact服务需要基于表,需要手动调用spark的存储过程运行。在实际使用场景中iceberg中的表几百上千,甚至到万级以上,这样必然会带来巨大的运维成本。23.在调用spark存储过程运行compact任务时,无法根据表当前的情况进行计算单元的设置,很可能会出现小表使用了很多的计算单元造成资源浪费,或者大表只给了很小的资源会导致任务运行时长很长,导致查询效率降低,甚至最终失败的情况。在运行compact任务时,只能通过手动指定集群来进行资源隔离,无法根据catalog、库甚至表等自动隔离。24.为至少在一定程度上克服相关技术中在使用compact任务对表结构进行优化时,运维成本过高、查询性能达不到预期效果,导致整体运行效率低的问题,本技术提供一种自动优化表数据结构布局的方法、系统及设备。25.实施例一请参阅图1,图1是本技术一个实施例提供的一种自动优化表数据结构布局的方法流程示意图,所述方法包括:s1.获取待优化资源信息;s2.利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与所述隔离资源的结果;s3.利用iceberg表的元数据信息与所述隔离资源的结,自动生成优化任务;s4.利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。26.在一个实施例中,所述获取待优化资源信息,从广义上指可以跑优化任务的资源池子,在本实施例中包括但不限于k8s的namespace。27.在一个实施例中,如步骤s2所述,利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与所述隔离资源的结果,包括:所述利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到资源隔离的结果,包括:判断所述优化资源信息是否满足第一预设条件;若满足,则通过k8s提供的apiclient函数生成namespace;对所述namespace进行资源配额并配置当前条件下最大可用的cpu和当前条件下最大可用的内存,实现资源配置;利用所述资源配置的结果,绑定所述k8s下所述namespace与数据湖iceberg下的catalog之间一对一的关联关系,得到资源隔离的结果;其中,所述第一预设条件为:所述优化资源信息不存在于相关后台且所述优化资源信息满足k8s资源需求。28.详见图2,判断所述优化资源信息是否满足上述第一预设条件,若满足则在创建k8s的namespace之前持久化资源信息,即将数据写入到数据库中。29.创建k8s的namespace,判断k8s是否存在所创建的namespace,若不存在,则创建namespace;给创建好的namespace分配资源限额,最后通过设置spark作业中hdfs配置上一步骤创建的configmap配置文件,完成资源隔离。30.在一个实施例中,如步骤s3所述,所述利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务,包括:利用所述隔离资源的结果,获取所述数据湖iceberg表的运行状态信息;利用所述数据湖iceberg表的运行状态信息,获取相关运行状态因子,所述相关运行状态因子包括:任务类型因子、小文件数量因子、deletefiles数量因子、新增快照因子、新增数据因子;利用所述相关运行状态因子,判断当前是否需要创建相关优化运维任务;若所述相关运行状态因子的阈值数量满足第二预设条件,则创建相对应的优化运维任务;对所述优化运维任务进行优先级调度。31.进一步地,所述利用所述隔离资源的结果,获取所述数据湖iceberg表的运行状态,包括:利用所述隔离资源的结果,通过数据湖iceberg下的catalogmanager函数扫描catalog下的数据库和表的相关信息,获取表的存储路径后;利用获取的所述表的存储路径,调用iceberg的api,获取所述数据湖iceberg表的运行状态信息;其中,所述数据湖iceberg表的运行状态信息,包括:表具体的快照信息、快照下的文件信息、删除文件信息和记录数信息。32.进一步地,所述若所述相关运行状态因子的阈值数量满足第二预设条件,则创建相对应的优化运维任务,包括:若当前所述数据湖iceberg表中存在新增快照因子,且总的快照数据超过后台预先设定的第一快照阈值,且当前任务队列中没有创建与其对应的清理任务,则创建相应的清理任务;若当前所述数据湖iceberg表中存在新增数据因子,且小文件数量因子或deletefiles数量因子超过后台预先设定的第二新增因子阈值,且当前任务队列中没有创建与其对应的合并任务,则创建相应的合并任务;若当前所述数据湖iceberg表中存在新增数据因子,且小文件数量因子或deletefiles数量因子超过后台预先设定的第二新增因子阈值,且新增数据因子在总数据量的占比超过了后台预先设定的第三新增因子阈值,且当前任务队列中没有创建与其对应的排序任务,则创建相应的排序任务。33.进一步地,所述对所述优化运维任务进行优先级调度,包括:对所述优化运维任务进行打分;按照打分的结果由高到低生成任务优先级,通过所述任务优先级执行所述优化运维任务;其中,合并任务、排序任务的优先级起始得分高于清理任务,根据快照数据量梯度增加所述清理任务的优先级;根据deletefiles数量因子和小文件数量因子分别增加所述合并任务和所述排序任务的优先级。34.在具体实施时,获取iceberg表的状态详情:通过catalogmanager扫描catalog下的数据库和表的信息,拿到表的存储路径后,调用iceberg的api(applicationprogramminginterface)即应用程序编程接口获取表具体的快照信息、快照下的文件信息、删除文件信息和记录数信息。35.根据任务类型、小文件数量、deletefiles数量等因子判断当前是否需要创建优化运维任务,并对任务优先级进行打分,用来做优先级的调度:如果当前表有新增快照,总的快照数据超过阈值,且任务队列中没有相同类型的任务则生成清理任务。36.如果有新增数据,小文件的数量超过阈值或者删除文件的数量超过阈值,且任务队列中没有相同类型的任务则生成合并任务。37.如果表状态满足合并任务条件,配置参数中配置了排序字段,新增数据量在数据量的占比超过了阈值,且任务队列中没有相同类型的任务则生成排序任务。38.通过给任务进行打分生成任务优先级,决定任务运行的顺序:合并任务、排序任务的优先级起始得分比清理任务高。39.根据快照数据量可以梯度增加清理任务的优先级。40.根据删除文件个数和小文件个数梯度增加合并任务和排序任务的优先级。41.如果队列中的任务长时间不运行,则自动提升优先级。42.在一个实施例中,所述运行所述优化任务,得到所述数据湖iceberg表的相关运行结果之前,还包括:利用所述隔离资源的结果以及自动生成优化任务的结果,通过绑定的catalog的优化资源个数生成任务获取线程;利用所述任务获取线程,判断当前所述catalog下是否存在可用资源;若存在,则根据任务队列中的优先级获取待运行任务;其中,如果优先级相同,则依据运行任务的创建时间作为执行标准,创建时间早的先执行。43.进一步地,所述利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果,包括:利用所述优化任务的相关信息,获取优化任务的优化参数,所述优化参数,包括:最大的小文件数量、最小文件的大小、最大文件的大小、排序字段、删除文件阈值、快照保存时间;其中,所述优化任务的相关信息,包括:任务信息中的catalogid,catalogname,database信息和table信息;利用所述优化任务的优化参数,判断是否满足资源集群的需求;若满足,则提交所述优化任务到所述资源集群并通过k8ssparkoperator设置spark任务的资源;通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。44.在具体实施时,详见图3,查询关联了优化资源的湖仓目录,根据湖仓目录获取任务队列即优化任务;利用获取的优化任务,得到任务的优化参数;判断是否满足资源集群的需求;若满足,则提交所述优化任务到所述资源集群并通过k8ssparkoperator设置spark任务的资源;通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。45.在具体实施时,本技术通过获取待优化资源信息;利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到资源隔离的结果;利用所述隔离资源的结果,自动生成优化任务;运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。本技术通过优化任务这一步骤实现表优化可以减少表的小文件个数、删除文件个数,通过对表结构进行了重写,可以提升表的查询性能;同时在进行优化任务中的表优化时可以通过任务生成规则、打分规则自动生成表优化的资源设置,无需用户关心表的小文件个数、删除文件个数,可以提升效率,通过k8s与数据湖iceberg表之间进行资源绑定,自动生成优化任务并执行,在dataops的场景中消除优化者的角色,会在后台持续进行文件结构优化操作,最大限度减少运维工作量,减少运维成本。46.实施例二请参阅图4,图4是本技术一个实施例提供的一种自动优化表数据结构布局的系统组成流程示意图,所述系统包括:获取模块41,用于获取待优化资源信息;资源隔离模块42,用于利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到资源隔离的结果;数据处理模块43,利用所述隔离资源的结果,自动生成优化任务;执行模块44,用于利用k8ssparkoperator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。47.实施例三请参阅图5,图5是本技术一个实施例提供的一种自动优化表数据结构布局的设备组成流程示意图,所述设备包括:存储器51,其上存储有可执行程序;处理器52,用于执行所述存储器51中的所述可执行程序,以实现上述中任一项所述方法的步骤。48.可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。49.需要说明的是,在本技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本技术的描述中,除非另有说明,“多个”的含义是指至少两个。50.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属
技术领域:
:的技术人员所理解。51.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。52.本
技术领域:
:的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。53.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。54.上述提到的存储介质可以是只读存储器,磁盘或光盘等。55.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。56.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。当前第1页12当前第1页12
技术特征:
1.一种自动优化表数据结构布局的方法,其特征在于,所述方法包括:获取待优化资源信息;利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与隔离资源的结果;利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务;利用k8s spark operator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。2.根据权利要求1所述的方法,其特征在于,所述利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与所述隔离资源的结果,包括:判断所述优化资源信息是否满足第一预设条件;若满足,则通过k8s提供的api client函数生成namespace;对所述namespace进行资源配额并配置当前条件下最大可用的cpu和当前条件下最大可用的内存,实现资源配置;利用所述资源配置的结果,绑定所述k8s下所述namespace与数据湖iceberg下的catalog之间一对一的关联关系,得到iceberg表的元数据信息与所述隔离资源的结果;其中,所述第一预设条件为:所述优化资源信息不存在于相关后台且所述优化资源信息满足k8s资源需求。3.根据权利要求1所述的方法,其特征在于,所述利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务,包括:利用所述隔离资源的结果,获取所述数据湖iceberg表的运行状态信息;利用所述数据湖iceberg表的运行状态信息,获取相关运行状态因子,所述相关运行状态因子包括:任务类型因子、小文件数量因子、delete files数量因子、新增快照因子、新增数据因子;利用所述相关运行状态因子,判断当前是否需要创建相关优化运维任务;若所述相关运行状态因子的阈值数量满足第二预设条件,则创建相对应的优化运维任务;对所述优化运维任务进行优先级调度。4.根据权利要求3所述的方法,其特征在于,所述利用所述隔离资源的结果,获取所述数据湖iceberg表的运行状态,包括:利用所述隔离资源的结果,通过数据湖iceberg下的catalog manager函数扫描catalog下的数据库和表的相关信息,获取表的存储路径后;利用获取的所述表的存储路径,调用iceberg的api,获取所述数据湖iceberg表的运行状态信息;其中,所述数据湖iceberg表的运行状态信息,包括:表具体的快照信息、快照下的文件信息、删除文件信息和记录数信息。5.根据权利要求3所述的方法,其特征在于,所述若所述相关运行状态因子的阈值数量满足第二预设条件,则创建相对应的优化运维任务,包括:若当前所述数据湖iceberg表中存在新增快照因子,且总的快照数据超过后台预先设
定的第一快照阈值,且当前任务队列中没有创建与其对应的清理任务,则创建相应的清理任务;若当前所述数据湖iceberg表中存在新增数据因子,且小文件数量因子或delete files数量因子超过后台预先设定的第二新增因子阈值,且当前任务队列中没有创建与其对应的合并任务,则创建相应的合并任务;若当前所述数据湖iceberg表中存在新增数据因子,且小文件数量因子或delete files数量因子超过后台预先设定的第二新增因子阈值,且新增数据因子在总数据量的占比超过了后台预先设定的第三新增因子阈值,且当前任务队列中没有创建与其对应的排序任务,则创建相应的排序任务。6.根据权利要求3所述的方法,其特征在于,所述对所述优化运维任务进行优先级调度,包括:对所述优化运维任务进行打分;按照打分的结果由高到低生成任务优先级,通过所述任务优先级执行所述优化运维任务;其中,合并任务、排序任务的优先级起始得分高于清理任务,根据快照数据量梯度增加所述清理任务的优先级;根据delete files数量因子和小文件数量因子分别增加所述合并任务和所述排序任务的优先级。7.根据权利要求1所述的方法,其特征在于,所述利用k8s spark operator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果之前,还包括:利用所述隔离资源的结果以及自动生成优化任务的结果,通过绑定的catalog的优化资源个数生成任务获取线程;利用所述任务获取线程,判断当前所述catalog下是否存在可用资源;若存在,则根据任务队列中的优先级获取待运行任务;其中,如果优先级相同,则依据运行任务的创建时间作为执行标准,创建时间早的先执行。8.根据权利要求1所述的方法,其特征在于,所述利用k8s spark operator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果,包括:利用所述优化任务的相关信息,获取优化任务的优化参数,所述优化参数,包括:最大的小文件数量、最小文件的大小、最大文件的大小、排序字段、删除文件阈值、快照保存时间;利用所述优化任务的优化参数,判断是否满足资源集群的需求;若满足,则提交所述优化任务到所述资源集群并通过k8s spark operator设置spark任务的资源;通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。9.一种自动优化表数据结构布局的系统,其特征在于,所述系统包括:
获取模块,用于获取待优化资源信息;资源隔离模块,用于利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与隔离资源的结果;数据处理模块,用于利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务;执行模块,用于利用k8s spark operator服务设置spark任务,通过设置的所述spark任务运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。10.一种自动优化表数据结构布局的设备,其特征在于,所述设备包括:存储器,其上存储有可执行程序;处理器,用于执行所述存储器中的所述可执行程序,以实现权利要求1-8中任一项所述方法的步骤。
技术总结
本申请涉大数据及数据湖技术领域,尤其涉及一种自动优化表数据结构布局的方法、系统及设备。包括:获取优化资源信息;利用所述优化资源信息,通过k8s与数据湖iceberg表之间进行资源绑定,得到iceberg表的元数据信息与所述隔离资源的结果,利用iceberg表的元数据信息与所述隔离资源的结果,自动生成优化任务,运行所述优化任务,得到所述数据湖iceberg表的相关运行结果。本申请通过优化任务这一步骤实现表优化可以减少表的小文件个数、删除文件个数,通过对表结构进行了重写,可以提升表的查询性能;同时在进行优化任务中的表优化时可以通过任务生成规则、打分规则自动生成表优化的资源设置,无需用户关心表的小文件个数、删除文件个数,可以提升运维效率。可以提升运维效率。可以提升运维效率。
技术研发人员:赵扬名 张敢 吴文池 吴小前
受保护的技术使用者:北京滴普科技有限公司
技术研发日:2023.07.12
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
