一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式数据处理方法、装置、电子设备及存储介质与流程

2022-02-19 05:51:39 来源:中国专利 TAG:

1.本技术涉及数据库领域,具体而言,本技术涉及一种分布式数据处理方法和装置,一种电子设备,以及一种计算机可读存储介质。
背景技术
:2.在数据仓库建设与数据治理体系中,为了提高dwd(datawarehousedetail,数据明细层)的易用性,提升数据查询效率,通常在数据明细层采用一些维度退化手法将分布式数据集进行分区或分桶存储。3.但是现有的分布式数据处理方法往往会在不同层级文件夹下出现重复数据,且数据分布不均匀,进而导致数据使用时会消耗更多的计算资源。技术实现要素:4.本技术的目的旨在提供一种分布式数据处理方法、装置、电子设备及存储介质,以解决上述的至少一个技术问题。本技术实施例所提供的方案具体如下:5.第一方面,本技术提供了一种分布式数据处理方法,包括:6.确定分布式数据集对应的分桶字段,基于上述分桶字段将上述分布式数据集确定为至少一个数据子集,每一上述数据子集对应于上述分桶字段的一个字段值;7.对于上述分布式数据集中的每一条数据,基于该数据的分区存储信息确定该数据的分桶编码;8.基于上述分布式数据集的数据记录总数或者数据总大小,确定各上述数据子集对应的数据桶的桶序号;9.对于每一上述数据子集中的每一条数据,基于该数据的分桶编码从该数据子集对应的数据桶的桶序号中确定该数据对应的目标桶序号,并将该数据写入上述目标桶序号对应的数据桶。10.结合第一方面,在第一方面的第一种实施方式中,上述基于上述分布式数据集的数据记录总数,确定各上述数据子集对应的数据桶的桶序号还包括:11.基于上述分布式数据集的数据记录总数和预设分桶数,确定桶平均数据记录数;12.确定各上述数据子集的数据记录数,基于各上述数据子集的数据记录数和上述桶平均数据记录数,确定各上述数据子集对应的数据桶的桶序号。13.结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,上述基于各上述数据子集的数据记录数和上述桶平均数据记录数,确定各上述数据子集对应的数据桶的桶序号,包括:14.将各上述数据子集按照数据记录数由大到小的顺序进行排列,并基于排列顺序确定各上述数据子集对应的数据桶的桶序号;15.对于数据子集i,若数据子集i对应的数据记录数ki与桶平均数据记录数n相等,则确定数据子集i对应的数据桶的桶序号为m 1,其中,当i为大于1的正整数时,m为上一数据子集对应的数据桶中的最大桶序号,当i等于1时,m等于0;16.若数据记录数ki大于桶平均数据记录数n,则确定数据子集i对应的数据桶的最小桶序号为m 1、最大桶序号为其中,表示向上取整;17.若数据记录数ki小于桶平均数据记录数n,则确定数据子集i至数据子集j对应的数据桶的桶序号为m 1,其中,j为使得大于或者等于桶平均数据记录数n时的最小正整数,r为数据子集的索引,为数据子集i至数据子集j的所有数据子集的数据记录数之和,kr表示数据子集r的数据记录数,r为大于i且小于或者等于j的正整数。18.结合第一方面,在第一方面的第三种实施方式中,上述基于上述分布式数据集的数据总大小,确定各上述数据子集对应的数据桶的桶序号,包括:19.基于上述分布式数据集的数据总大小和预设桶数据大小,确定分桶数;20.确定各上述数据子集的数据大小,基于各上述数据子集的数据大小和上述分桶数,确定各上述数据子集对应的数据桶的桶序号。21.结合第一方面的第三种实施方式,在第一方面的第四种实施方式中,上述基于各上述数据子集的数据大小和上述分桶数,确定各上述数据子集对应的数据桶的桶序号,包括:22.确定各上述数据子集的数据大小占上述数据总大小的数据占比;23.基于各上述数据子集对应的数据大小占比和上述分桶数,确定各上述数据子集对应的数据桶的桶序号,其中,每一上述数据子集对应的数据桶的桶序号连续。24.结合第一方面,在第一方面的第五种实施方式中,对于上述分布式数据集中的每一条数据,上述基于该数据的分区存储信息确定该数据的分桶编码,包括:25.基于该数据的数据行序号、所在分区的分区索引号以及总分区数,确定该数据的分桶编码。26.结合第一方面,在第一方面的第六种实施方式中,对于每一上述数据子集中的每一条数据,上述基于该数据的分桶编码从该数据子集对应的数据桶的桶序号中确定该数据对应的目标桶序号,包括:27.确定该数据子集对应的数据桶的桶数量和最小桶序号;28.将该数据子集对应的数据桶的桶数量作为除数,对该数据的分桶编码取余得到对应的余数;29.将上述余数和上述最小桶序号之和确定为该数据子集对应的数据桶的目标桶序号。30.结合第一方面,在第一方面的第七种实施方式中,还包括:31.获取结构化查询语句,并对上述结构化查询语句进行解析,得到上述结构化查询语句对应的逻辑执行计划;32.确定上述逻辑执行计划中的查询关键信息,并确定上述查询关键信息对应的目标数据的分桶存储信息;33.基于上述逻辑执行计划和上述分桶存储信息,确定上述结构化查询语句对应的物理执行计划,并执行上述物理执行计划。34.第二方面,本技术提供了一种分布式数据处理装置,包括:35.数据处理模块,用于确定分布式数据集对应的分桶字段,基于上述分桶字段将上述分布式数据集确定为至少一个数据子集,每一上述数据子集对应于上述分桶字段的一个字段值;36.分桶编码确定模块,用于对于上述分布式数据集中的每一条数据,基于该数据的分区存储信息确定该数据的分桶编码;37.数据桶确定模块,用于基于上述分布式数据集的数据记录总数或者数据总大小,确定各上述数据子集对应的数据桶的桶序号;38.数据写入模块,用于对于每一上述数据子集中的每一条数据,基于该数据的分桶编码从该数据子集对应的数据桶的桶序号中确定该数据对应的目标桶序号,并将该数据写入上述目标桶序号对应的数据桶。39.第三方面,本技术提供了一种电子设备,该电子设备包括存储器和处理器;存储器中存储有计算机程序;处理器,用于在运行计算机程序时,执行第一方面及其任一项所提供的方法。40.第四方面,本技术提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,计算机程序在被处理器运行时,执行第一方面及其任一项所提供的方法。41.与现有技术相比,本技术提供的技术方案的有益效果如下:42.本技术的实施可将分布式数据中相同字段值的数据集中存储至一个或者多个数据桶中,减少数据倾斜以及分布不均匀的情况,使得数据分布更为合理,并且可在查询数据时减少计算资源的消耗,提升数据明细层的易用性。附图说明43.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。44.图1为本技术的一种实施例提供的分布式数据处理方法的流程图;45.图2a为相关技术中分布式数据存储示意图;46.图2b为本技术的一种实施例中分布式数据的存储示意图;47.图3为本技术的一种实施例中确定物理执行计划的流程示意图;48.图4为本技术的一种实施例提供的分布式数据处理装置的结构示意图;49.图5为本技术提供的一种电子设备的结构示意图。具体实施方式50.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本发明的限制。51.本
技术领域
技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。52.为使本技术的目的、技术方案和优点更加清楚,下面将结合具体地实施例和附图对本技术的各可选的实施方式进行详细说明。53.图1中示出了本技术实施例提供的一种分布式数据处理方法,该方法具体可以由本技术实施例提供的电子设备执行,具体地电子设备可以是服务器,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器,本技术在此不做限制。具体地,该方法包括以下步骤s101‑104:54.步骤s101:确定分布式数据集对应的分桶字段,基于分桶字段将分布式数据集确定为至少一个数据子集。55.具体地,分布式数据集为待进行分桶存储的数据,如源头数据层(operationaldatastore,ods)中的增量数据、hive表中的数据等。56.其中,分桶字段为分布式数据集中各数据对应的任一共同字段,或者为预先指定的字段,如hive表预定义的分桶字段。因此可将分布式数据集中对应于该分桶字段的一个字段值的数据确定为一个数据子集,进而基于分桶字段可将分布式数据集确定为至少一个数据子集,一个数据子集对应于分桶字段的一个字段值,不同数据子集对应的字段值互不相同。57.其中,分布式数据集是一个不可变、可分区、里面的元素可并行计算的数据集合。且分布式数据集可自动容错和位置感知性调度,具有可伸缩性,适合在大规模或超大规模集群上计算的数据集。58.步骤s102:对于分布式数据集中的每一条数据,基于该数据的分区存储信息确定该数据的分桶编码。59.具体地,对于分布式数据集中的每一条数据,该数据的分区存储信息可包括该数据在对应分区的迭代器中的数据行序号、所在分区的索引号以及分布式数据集对应的分区的总分区数。60.进一步地,基于该数据的数据行序号(从0开始)、所在分区的分区索引号以及总分区数,可确定该数据的分桶编码。其计算公式可以为:61.分桶编码=数据行序号*总分区数 当前分区索引号。62.其中,任一数据的分桶编码用于确定将该数据写入的数据桶的目标桶序号,并且任一数据具有唯一的长整形分桶编码,即任一数据至对应有一个分桶编码,且该分桶编码为整除。63.进一步地,可基于各数据的分桶编码对分布式数据集中的各数据重新进行定义,即确定分布式数据集对应的分布式键值数据,任一键值对的指定键值为分桶编码和对应的数据子集对应的字段值,值为对应的数据。基于此,可将分布式数据集中的各条数据、分桶编码以及对应的字段值统一定义并记录。64.步骤s103:基于分布式数据集的数据记录总数或者数据总大小,确定各数据子集对应的数据桶的桶序号。65.具体地,基于分布式数据集的数据记录总数,可确定各数据子集对应的数据桶的桶序号。其中,任一数据子集对应至少一个数据桶,且每一数据子集在对应多个数据桶时,该数据子集对应的多个数据桶的桶序号连续。66.在确定各数据子集对应的数据桶的桶序号时,可先确定分布式数据集中的所有数据的数据记录总数、以及各数据子集中的所有数据的数据记录数,并确定预设分桶数。67.其中,预设分桶数为预先定义的,在将分布式数据集中的各数据进行分桶时的预定义的数据桶的桶数量。68.进一步地,基于分布式数据集的数据记录总数和预设分桶数,可确定桶平均数据记录数。桶平均数据记录数表示若将分布式数据集的所有数据平均写入预设分桶数的数据桶时,每个数据桶的数据的数据记录数。69.进一步地,基于各数据子集的数据记录数和桶平均数据记录数,可确定各数据子集对应的数据桶的桶序号。具体对于每一数据子集而言,可基于该数据子集的数据记录数和桶平均数据记录数,确定该数据子集对应的数据桶的桶数量,并基于该数据子集对应的数据桶的桶数量确定该数据子集对应的数据桶的桶序号。70.其中,在确定各数据子集的数据记录数之后,可将各数据子集按照数据记录数由大到小的顺序进行排列,并基于排列顺序依次确定每一数据子集对应的数据桶的桶序号。71.对于数据子集i而言,若数据子集i对应的数据记录数ki与桶平均数据记录数n相等,则确定数据子集i对应的数据桶的桶数量为1,其对应的数据桶的桶序号为m 1。其中,当i为大于1的正整数时,m为数据子集i的上一数据子集i‑1对应的数据桶中的最大桶序号,当i等于1,即数据子集i为第一个数据子集时,数据子集i对应的数据桶的序号为1。72.作为一示例,若数据子集i对应的数据记录数为10,桶平均数据记录数为10,在数据子集i为第一个数据子集的情况下,可确定数据子集i对应的数据桶的序号为1。在数据子集i不是第一个数据子集的情况下,可确定数据子集i对应的数据桶的序号为数据子集i‑1对应的最大桶序号加1。73.进一步地,若数据子集i对应的数据记录数ki大于桶平均数据记录数n,则确定数据子集i对应的数据桶的最小桶序号为m 1、最大桶序号为其中,表示向上取整。74.即确定数据记录数ki与桶平均记录数n的商,并对商进行向上取整得到数据子集i对应的数据桶的桶数量为同样,当i为大于1的正整数时,m为数据子集i的上一数据子集i‑1对应的数据桶中的最大桶序号,数据子集i对应的数据桶的最小桶序号为m 1,基于最小桶序号和数据子集i对应的数据桶的桶数量可得到数据子集i对应的最大桶序号。当i等于1,即数据子集i为第一个数据子集时,数据子集i对应的数据桶的最小桶序号为1,最大桶序号为75.作为一示例,若数据子集i对应的数据记录数为20,桶平均记录数为8,对数据记录数20和桶平均记录数8的商进行向上取整后可得到数据子集i对应的桶数量为3。在数据子集i为第一个数据子集的情况下,可确定数据子集i对应的最小桶序号为1,最大桶序号为3。在数据子集i不是第一个数据子集的情况下,假设数据子集i‑1对应的最大桶序号为4,则数据子集i对应的最小桶序号为5,最大桶序号为8。76.进一步地,若数据记录数ki小于桶平均数据记录数n,则确定数据子集i至数据子集j对应的数据桶的桶序号为m 1,其中,j为使得大于或者等于桶平均数据记录数n时的最小正整数,r为数据子集的索引,为数据子集i至数据子集j的所有数据子集的数据记录数之和,kr表示数据子集r的数据记录数,r为大于i且小于或者等于j的正整数。77.即在数据子集i的数据记录数ki小于桶平均数据记录数n的情况下,可确定数据子集i需要与其他至少一个数据子集共享同一个数据桶,因此可按照数据记录数由大到小的顺序将数据子集i的数据记录数与之后的数据子集的数据记录数逐一相加,直至数据记录数之和刚好等于或者大于桶平均记录数n时停止。此时将最后一个将数据记录数进行相加的数据子集j、数据子集i以及数据子集i和数据子集j之间的数据子集的桶序号确定为m 1。并且当i为大于1的正整数时,m为数据子集i的上一数据子集i‑1对应的数据桶中的最大桶序号,数据子集i至数据子集j的桶序号均为m 1。当i等于1,即数据子集i为第一个数据子集时,数据子集i至数据子集j对应的数据桶的桶序号均为1。其中,上述各数据子集的数据记录数之和可基于临时累加器进行记录,且临时累加器的初始值为0。在确定数据子集i至数据子集j对应的数据桶序号之后,需重新初始化临时累加器的初始值为0。78.作为一示例,若数据子集i对应的数据记录数10,桶平均记录数为26,由于数据子集i对应的数据记录数小于桶平均记录数,可基于临时累加器记录数据子集i对应的数据记录数,此时临时累加器的值为10。进一步地,若数据子集i 1的数据记录数为9,则继续基于临时累加器记录数据子集i和数据子集i 1的数据记录数之和19,并判断此时临时累加器的值是否大于或者等于桶平均记录数。此时临时累加器的值小于桶平均记录数,继续基于临时累加器记录数据子集i至数据子集i 2的数据记录数之和。若数据子集i 2的数据记录数为8,则此时临时累加器的值为27,且刚好大于桶平均记录数26。在此情况下,可确定数据子集i、数据子集i 1以及数据子集i 2的桶序号相同,并在数据子集i为第一个数据子集的情况下,上述三个数据子集对应的同序号为1,在数据子集i不是第一个数据子集的情况下,假设数据子集i——1对应的最大桶序号为5,则数据上述三个数据子集对应的桶序号均为6。79.基于上述方式,可按照记录数由大到小的顺序依次确定每一数据子集的数据桶的桶数量以及相对应的数据桶的桶序号,并且对于每一数据子集而言,其对应的数据桶的桶序号连续。80.可选地,基于分布式数据集的数据总大小,可确定各数据子集对应的数据桶的桶序号。其中,任一数据子集对应至少一个数据桶,且每一数据子集在对应多个数据桶时,该数据子集对应的多个数据桶的桶序号连续。81.其中,数据大小也可称为文件大小或者数据量,为方便描述,以下统一采用数据总大小对分布式数据集的数据总量或文件总大小进行描述,采用数据大小对各数据子集的数据量或文件大小进行描述。82.在确定各数据子集对应的数据桶的桶序号时,可先确定分布式数据集中的所有数据的数据总大小、以及各数据子集的所有数据的数据大小,并确定预设桶数据大小。83.其中,预设桶数据大小为预先定义的,在将分布式数据集中的各数据进行分桶时的每个数据桶的数据大小阈值。84.进一步地,基于分布式数据集的数据总大小和预设桶数据,可确定分桶数。分桶数表示若每个数据桶的数据大小阈值为预设桶数据大小的情况下,将分布式数据集的所有数据写入数据桶时所需要的数据桶的桶数量。85.进一步地,基于各数据子集的数据大小和分桶数,可确定各数据子集对应的数据桶的桶序号。具体对于每一数据子集而言,可基于该数据子集的数据大小和分桶数,确定该数据子集对应的数据桶的桶数量,进而基于该数据子集对应的数据桶的桶数量确定该数据子集对应的数据桶的桶序号。86.其中,可将各数据子集按照一定的依据进行排列,并依次确定各数据子集对应的数据桶的桶序号,从而使得每一数据子集对应的数据桶的桶序号连续。如可按照数据大小由大到小的顺序进行排列,并按照此顺序依次确定各数据子集对应的数据桶的桶序号。87.或者,对于每一数据子集而言,可先基于该数据子集的数据大小和分桶数,确定该数据子集对应的数据桶的桶数量,进而确定每一数据子集对的数据桶的桶序号并进行排序以使其连续。88.在基于各数据子集的数据大小和分桶数,确定各数据子集对应的数据桶的桶序号时,可确定各数据子集的数据大小占分布式数据集的数据总大小的数据占比,进而基于各数据子集对应的数据大小占比和分桶数,确定各数据子集对应的数据桶的桶序号。89.即各数据子集对应的数据大小占比可作为各数据子集对应的数据桶的桶数量占分桶数的占比,进而基于各数据子集对应的数据桶的桶数量占比,确定各数据子集对应的数据桶的桶数量、以及各数据子集对应的数据桶的桶序号。其中,各数据子集对应的数据桶的桶序号连续,也即每一数据子集对应的数据桶为连续的一个或者多个数据桶。90.其中,对于每一数据子集,该数据子集对应的数据桶的桶数量为整数,因此可将该数据子集对应的数据桶的桶数量占比与分桶数之积进行向上取整,得到该数据子集最终对应的数据桶的桶数量。91.作为一示例,假设将各数据子集按照数据大小由大到小的顺序进行排列,得到数据子集1、数据子集2和数据子集3,其数据子集1、数据子集2和数据子集3的数据大小分别为128m、64m和32m。由此可知分布式数据集的数据总大小为224,数据子集1的数据大小占数据总大小的占比为4/7,数据子集2的数据大小占数据总大小的占比为2/7,数据子集3的数据大小占数据总大小的占比为1/7。若基于预设桶数据大小和数据总大小确定出的分桶数为数据子集1的桶数量为5,则数据子集1对应的数据桶的桶数量为数据子集2对应的数据桶的桶数量为数据子集3对应的数据数量为92.进一步可连续确定数据子集1、数据子集2和数据子集3对应的数据桶的桶序号,即数据子集1对应的桶序号为1‑3,数据子集2对应的数据桶的桶序号为4‑5,数据子集3对应的数据桶的桶序号为6。93.可选地,每一数据子集的数据可以以orc(optimizedrowcolumnar,优化行列)格式进行存储,每一数据子集对应的一个数据桶可以视为一个orc数据文件。基于上述任一种方式确定各数据子集对应的数据桶之后,可使得分桶字段的每一字段值对应的数据集中存于一个或者多个orc数据文件中,从而避免出现数据倾斜和小文件较多等问题。基于此,在基于上述任一种方式确定出各数据子集对应的数据桶及其序号之后,可生成分桶字典数据以对分桶字段的各字段值所对应的数据的分桶情况进行统一记录。94.如图2a所示,假设分桶字段为eid,基于现有技术对分布式数据集中的数据进行处理之后,对应于分桶字段eid的不同字段值的数据存储于相同的orc文件中。基于上述实现方式可实现图2b所示的存储情况,如图2b的分桶字典数据则可能为(eid1→【orc‑file1、orc‑file2】,eid2→【orc‑file3】,eid3→【orc‑file4】,eid4→【orc‑file4】)。即orc‑file1、orc‑file2数据文件中只有eid=’eid1’的数据记录。而eid=’eid2’只会存放于orc‑file3文件中,eid=’eid3’和eid=’eid4’的所有数据记录只会存在于orc‑file4数据文件中,不会出现在其他orc数据文件中。95.步骤s104:对于每一数据子集中的每一条数据,基于该数据的分桶编码从该数据子集对应的数据桶的桶序号中确定该数据对应的目标桶序号,并将该数据写入目标桶序号对应的数据桶。96.具体地,对于每一数据子集中的每一条数据,可先确定该数据子集对应的数据桶的桶数量和最小桶序号,并将该数据子集对应的数据桶的桶数量作为除数,对该数据的分桶编码取余得到对应的余数。97.其中,对该数据的分桶编码取余得到的余数小于该数据子集对应的数据桶的桶数量,其最小值为0,最大值为该数据子集对应的数据桶的桶数量减1。98.进一步地,将该数据子集对应的余数和最小桶序号进行求和,并将最小桶序号和该余数之和确定为该数据对应的目标桶序号,并将该数据写入目标桶序号对应的数据桶。99.其中,由于该余数小于该数据子集对应的数据桶的桶数量,因此最小桶序号和该余数之和所对应的桶序号大于或者等于该数据子集对应的最小桶序号,且小于或者等于该数据子集对应的最大桶序号。并且在该数据子集中各数据具有唯一的分桶编码的情况下,可在该数据子集对应的各数据桶的桶序号中确定出该数据所对应的目标桶序号。100.作为一示例,数据子集i对应的数据桶的桶数量为16,且桶序号为17‑32。对于数据子集i中的任一条数据,基于该数据子集对应的数据桶的桶数量16对该数据的分桶编码取余后得到的余数的可能取值为0‑15,因此最小桶序号与余数之和的取值为17‑32,从而可将最小桶序号和余数之和确定为数据子集i对应的目标桶序号。101.其中,各数据子集对应的桶数量和最小桶序号可基于分桶字典数据确定,或者可基于分布式键值数据进行统计得到,在此不做限制。102.其中,在步骤s104之后,本技术实施例提供的分布式数据处理方法还可以包括数据查询过程。下面结合图3对该过程进行进一步说明,其中,图3示出了确定物理执行计划的流程示意图。103.具体地,可获取sql语句(structuredquerylanguage,结构化查询语句),并对sql预计进行解析得到sql语句对应的逻辑执行计划。具体可通过spark、iceberg语法解析器对其进行解析,将其转换为对应的逻辑执行计划。104.进一步地,得到逻辑执行计划后,可对逻辑执行计划进行分析,确定逻辑执行计划中的查询关键信息。具体可对得到的逻辑执行计划进行分区信息解析和常量信息解析等,得到查询关键信息。如sql表达式为:selectc2,c3from表名wheredt=‘2020‑01‑01’andety=‘custom’andf1in(‘a1’,‘a2’),经过分区信息、常量信息提取后得到的查询关键信息为(【dt→[2020‑01‑01],ety→[‘custom’],f1→[‘a1’,‘a2’]】)。[0105]进一步地,基于得到的查询关键信息,可查询sql语句所要查询的目标数据的分桶存储信息,即查询目标数据所在hdfs(hadoopdistributedfilesystem,分布式文件系统)路径。具体可由查询关键信息中的多项信息进行查询,如:hdfs://cluster/hive/db/table_name/一级分桶存储信息信息/二级分桶存储信息/bucket_dict/dict_meta.parquet。进一步地,基于分桶存储信息和对逻辑执行计划进行解析后得到的解析后的逻辑执行计划,构建slq语句对应的物理执行计划并执行该物理执行计划。[0106]本技术的实施可将分布式数据中相同字段值的数据集中存储至一个或者多个数据桶中,减少数据倾斜以及分布不均匀的情况,使得数据分布更为合理。并且通过对sql语句进行优化,可在查询数据时减少计算资源的消耗,提升数据明细层的易用性。[0107]对应于本技术所提供的分布式数据处理方法,本技术实施例还提供了一种分布式数据处理装置400,其结构示意图如图4中所示,该分布式数据处理装置400包括:数据处理模块401、分桶编码确定模块、数据桶确定模块以及数据写入模块。[0108]其中,数据处理模块401,用于确定分布式数据集对应的分桶字段,基于上述分桶字段将上述分布式数据集确定为至少一个数据子集,每一上述数据子集对应于上述分桶字段的一个字段值;[0109]分桶编码确定模块402,用于对于上述分布式数据集中的每一条数据,基于该数据的分区存储信息确定该数据的分桶编码;[0110]数据桶确定模块403,用于基于上述分布式数据集的数据记录总数或者数据总大小,确定各上述数据子集对应的数据桶的桶序号;[0111]数据写入模块404,用于对于每一上述数据子集中的每一条数据,基于该数据的分桶编码从该数据子集对应的数据桶的桶序号中确定该数据对应的目标桶序号,并将该数据写入上述目标桶序号对应的数据桶。[0112]可选地,上述数据桶确定模块403,用于:[0113]基于上述分布式数据集的数据记录总数和预设分桶数,确定桶平均数据记录数;[0114]确定各上述数据子集的数据记录数,基于各上述数据子集的数据记录数和上述桶平均数据记录数,确定各上述数据子集对应的数据桶的桶序号。[0115]可选地,上述数据桶确定模块403,用于:[0116]将各上述数据子集按照数据记录数由大到小的顺序进行排列,并基于排列顺序确定各上述数据子集对应的数据桶的桶序号;[0117]对于数据子集i,若数据子集i对应的数据记录数ki与桶平均数据记录数n相等,则确定数据子集i对应的数据桶的桶序号为m 1,其中,当i为大于1的正整数时,m为上一数据子集对应的数据桶中的最大桶序号,当i等于1时,m等于0;[0118]若数据记录数ki大于桶平均数据记录数n,则确定数据子集i对应的数据桶的最小桶序号为m 1、最大桶序号为其中,表示向上取整;[0119]若数据记录数ki小于桶平均数据记录数n,则确定数据子集i至数据子集j对应的数据桶的桶序号为m 1,其中,j为使得大于或者等于桶平均数据记录数n时的最小正整数,r为数据子集的索引,为数据子集i至数据子集j的所有数据子集的数据记录数之和,kr表示数据子集r的数据记录数,r为大于i且小于或者等于j的正整数。[0120]可选地,上述数据桶确定模块403,用于:integratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。[0141]总线502可包括一通路,在上述组件之间传送信息。总线502可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0142]存储器503可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd‑rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。[0143]存储器503用于存储执行本技术方案的应用程序代码,并由处理器501来控制执行。处理器501用于执行存储器503中存储的应用程序代码(计算机程序),以实现前述任一方法实施例所示的内容。[0144]应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。[0145]以上所述仅是本发明的部分实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献