数据报表的处理方法、装置、电子设备及存储介质与流程

文档序号:23003580发布日期:2020-11-20 11:51阅读:95来源:国知局
本申请涉及人工智能领域中的大数据技术,并且更具体地,涉及一种数据报表的处理方法、装置、电子设备及存储介质。
背景技术
::随着互联网技术和人工智能技术的深入发展,数据的重要性日益凸显。常规的商业智能(businessintelligence,bi)报表系统可以提供常规的明细查询和报表统计功能,但面对tb级及以上的海量数据时,传统的行存储数据库已无能为力,于是产生了分布式数据库来处理海量数据。目前,主要采用hadoop或者spark的分布式计算引擎来处理海量数据,但是现有的分布式计算引擎处理的数据,存在数据查询耗时长的缺陷。技术实现要素:本申请提供了一种数据报表的处理方法、装置、电子设备及存储介质。根据本申请的第一方面,提供了一种数据报表的处理方法,包括:获取数据报表的类型;如果所述数据报表的类型为日志报表数据,则获取所述数据报表的时间信息;根据所述时间信息获取所述数据报表所属的目标数据分区;获取所述数据报表的用户标识或日志标识,并根据所述用户标识或日志标识进行数据分桶以生成所述数据报表所存储的目标数据桶;以及将所述数据报表作为明细表存储至所述目标数据分区的所述目标数据桶之中。根据本申请的第二方面,提供了一种数据报表的处理装置,包括:第一获取模块,用于获取数据报表的类型;第二获取模块,用于如果所述数据报表的类型为日志报表数据,则获取所述数据报表的时间信息;第三获取模块,用于根据所述时间信息获取所述数据报表所属的目标数据分区;第一生成模块,用于获取所述数据报表的用户标识或日志标识,并根据所述用户标识或日志标识进行数据分桶以生成所述数据报表所存储的目标数据桶;以及存储模块,用于将所述数据报表作为明细表存储至所述目标数据分区的所述目标数据桶之中。根据本申请的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的数据报表的处理方法。根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如第一方面所述的数据报表的处理方法。本申请提供的数据报表的处理方法、装置、电子设备及存储介质,存在如下有益效果:通过在获取的数据报表为日志报表数据时,进一步获取数据报表的时间信息,并根据时间信息获取数据报表所属的目标数据分区,进而根据数据报表的用户标识或日志标识进行数据分桶,以生成数据报表所存储的目标数据桶,进而将数据报表作为明细表存储在目标数据分区的目标数据桶之中,由此,实现了日志报表数据的分区和分桶存储。通过按时间信息进行数据分区,能够方便用户访问特定时间的数据,以及方便用户进行时间维度上的数据变化趋势分析,加速数据访问,缩短数据查询耗时,提高数据访问效率。并且,通过在分区内进一步按照用户标识或日志标识进行数据分桶,能够将数据较为均匀地分布在各个存储节点上,避免了数据倾斜的问题,从而能够进一步加速数据访问。应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。附图说明附图用于更好地理解本方案,不构成对本申请的限定。其中:图1是根据本申请第一实施例的数据报表的处理方法的流程示意图;图2是根据本申请第二实施例的数据报表的处理方法的流程示意图;图3是根据本申请第三实施例的数据报表的处理方法的流程示意图;图4是实现本申请实施例的数据报表的处理方法的工程流程图;图5是根据本申请第四实施例的数据报表的处理装置的结构示意图;图6是根据本申请第五实施例的数据报表的处理装置的结构示意图;图7是根据本申请第六实施例的数据报表的处理装置的结构示意图;图8是根据本申请第七实施例的数据报表的处理装置的结构示意图;图9是用来实现本申请实施例的数据报表的处理方法的电子设备的框图。具体实施方式以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。下面参考附图描述本申请的数据报表的处理方法、装置、电子设备及存储介质。数据可以给予业务发展非常大的帮助。随着互联网技术和人工智能的深入发展,数据的重要性日益凸显。常规的bi报表系统可以提供常规的明细查询及报表统计功能,但面对tb级以上的海量数据,传统的行存储数据库已经无能为力,于是一些公司开发了各种处理海量数据的分布式数据库,比如hadoop、spark。分布式数据库能够更加高效的存储海量数据,并且查询性能也更加强大。但是,分布式数据库仍然存在一些不足,比如:(1)数据查询耗时长。采用分布式数据库处理的数据,即使是一个很简单的查询,也会耗费较长的时间,短则几分钟,长则数小时,导致数据查询效率低,并且,对于明细数据无法实现交互式查询。(2)资源成本高。通常一个离线队列只能处理一定量的计算任务,其余的任务都需要排队等待,而随着需求的增多,离线计算任务也越来越多,为了避免任务延迟,就只能不断增加预算来增加资源,给业务带来很大负担。(3)运维成本高。由于业务需求千奇百怪,统计维度各不相同,这导致了常规统计需要建立各式各样的聚合报表,日积月累的报表也给系统维护带来了很大的负担。为了解决上述至少一个问题,本申请公开了一种数据报表的处理方法,通过在获取的数据报表为日志报表数据时,进一步获取数据报表的时间信息,并根据时间信息获取数据报表所属的目标数据分区,进而根据数据报表的用户标识或日志标识进行数据分桶,以生成数据报表所存储的目标数据桶,进而将数据报表作为明细表存储在目标数据分区的目标数据桶之中,由此,实现了日志报表数据的分区和分桶存储。通过按时间信息进行数据分区,能够方便用户访问特定时间的数据,以及方便用户进行时间维度上的数据变化趋势分析,加速数据访问,缩短数据查询耗时,提高数据访问效率。并且,通过在分区内进一步按照用户标识或日志标识进行数据分桶,能够将数据较为均匀地分布在各个存储节点上,避免了数据倾斜的问题,从而能够进一步加速数据访问。通过对数据报表进行分区分桶,可以解决单表无限扩容的问题,仅增加机器即可自动平滑扩展,从而极大地降低了数据运维成本和用户获取数据的资源成本。图1是根据本申请第一实施例的数据报表的处理方法的流程示意图,该方法可以由本申请提供的数据报表的处理装置执行,也可以由本申请提供的电子设备执行,其中,电子设备可以是服务器,也可以是台式电脑、笔记本电脑、智能手机、可穿戴式设备等设备。下面以由本申请提供的数据报表的处理装置来执行本申请提供的数据报表的处理方法为例来解释说明本申请。如图1所示,该数据报表的处理方法,可以包括以下步骤:步骤101,获取数据报表的类型。其中,数据报表可以看作是一个整体文件,比如,将某一天内产生的所有日志数据看作是一个完整的数据报表,将某个月内产生的所有日志数据看作是一个完整的数据报表,等等。数据报表比如可以是日志数据、用户输入数据库的数据等,对应地,数据报表的类型可以是日志报表数据、数据库表等。通常,不同类型的数据报表的存储格式不同,因此本实施例中,可以根据数据报表的存储格式来确定数据报表的类型。比如,对于日志数据,其存储格式为“*.log”,则当数据报表的存储格式为“*.log”时,可以确定获取到的数据报表的类型为日志报表数据。步骤102,如果数据报表的类型为日志报表数据,则获取数据报表的时间信息。本实施例中,对于导入数据报表的处理装置的数据报表,可以获取数据报表的类型,当获取到数据报表的类型为日志报表数据时,可以进一步获取数据报表的时间信息。其中,时间信息可以指示数据报表的产生时间。步骤103,根据时间信息获取数据报表所属的目标数据分区。本实施例中,获取了数据报表的时间信息后,可以根据时间信息获取数据报表所属的目标数据分区。日志报表数据的数据量每天均会出现大量的增长,通过获取日志报表数据的时间信息,建立时间维度的分区,能够方便用户查询特定时间的数据,以及方便用户在时间维度上分析数据的变化趋势。能够理解的是,当日志报表数据为多个时,需要获取每个日志报表数据的时间信息,并根据各个时间信息确定各个日志报表数据分别对应的目标数据分区。需要说明的是,获取了数据报表的时间信息后,可以先查询已有的数据分区中是否存在与时间信息匹配的分区,若存在,则确定与数据报表的时间信息匹配的分区为数据报表所属的目标数据分区;若不存在,则根据时间信息新增一个分区,并将新增的分区确定为数据报表所属的目标数据分区。步骤104,获取数据报表的用户标识或日志标识,并根据用户标识或日志标识进行数据分桶以生成数据报表所存储的目标数据桶。其中,用户标识能够唯一的标识用户,比如可以是用户注册的身份标识码、用户账号等;日志标识比如可以是数据报表中包含的日志文件的文件标识,文件标识对应唯一的文件,不同的文件标识可以对应同一类型的文件。本实施例中,对于数据报表,可以获取数据报表的用户标识或日志标识,并根据用户标识或日志标识进行数据分桶,以生成数据报表所存储的目标数据桶。本申请实施例中,可以采用哈希算法进行数据分桶。以根据用户标识,采用哈希(hash)算法进行数据分桶为例,可以利用结构化查询语言(structuredquerylanguage,sql),在建表语句中指定“distributedbyhash(`user_id`)”,即可按照用户标识(即user_id)进行hash分桶,生成目标数据桶。能够理解的是,先根据时间信息确定数据报表所属的目标数据分区,再根据用户标识或日志标识生成目标数据桶,从而目标数据桶是属于目标数据分区的,也就是说,数据分区包含数据桶,且一个数据分区可以包含多个数据桶。步骤105,将数据报表作为明细表存储至目标数据分区的目标数据桶之中。本实施例中,生成了目标数据桶之后,可以将数据报表作为明细表存储至目标数据分区的目标数据桶之中。其中,明细表用于详细记录每一条日志的信息,可以将数据报表中记录的数据按照用户标识或者日志标识进行拆分,拆分成多个数据块,对于每个数据块,可以将其作为一个明细表并存储在与该数据块所属的用户标识或日志标识对应的目标数据桶中。举例而言,当获取到的是用户标识时,可以将数据报表按照用户标识进行数据分桶,生成各个用户标识对应的目标数据桶,每个目标数据桶可以利用用户标识进行标记。比如,获取的用户标识为a和b,则可以在目标数据分区上进行数据分桶生成两个目标数据桶,分别标记为目标数据桶a和目标数据桶b。接着,可以将数据报表中用户标识为a的数据存储在目标数据桶a中,将数据报表中用户标识为b的数据存储在目标数据桶b中。由此,实现了根据用户标识对数据报表进行分桶存储,使得数据较为均为的存储在不同的数据桶中,能够有效避免数据倾斜的问题,加速数据访问。当获取到的是日志标识时,可以将数据报表按照日志标识进行数据分桶,针对每个日志标识生成一个对应的目标数据桶,每个目标数据桶可以利用日志标识进行标记。此时,每个用户的每个文件对应一个目标数据桶,接着,可以将数据报表中每个日志标识对应的文件存储在对应的目标数据桶中。或者,根据日志标识进行数据分桶时,也可以根据日志标识所表示的文件的类型,针对每种文件的类型生成一个对应的目标数据桶,每个目标数据桶可以利用日志标识所表示的文件的类型进行标记。此时,不同用户的相同类型的文件对应一个目标数据桶,接着,可以将数据报表中表示同一类型的文件的日志标识对应的文件存储在对应的目标数据桶中。由此,实现了根据日志标识对数据报表进行分桶存储,使得数据较为均为的存储在不同的数据桶中,能够有效避免数据倾斜的问题,加速数据访问。需要说明的是,在获取了数据报表的用户标识或日志标识后,可以先查询目标数据分区中是否存在与用户标识或日志标识匹配的目标数据桶,若存在,则无需根据用户标识或日志标识进行数据分桶,可直接将数据报表作为明细表存储在目标数据分区上与用户标识或日志标识匹配的目标数据桶中;若不存在,再根据用户标识或日志标识进行数据分桶,以在目标数据分区上生成目标数据桶,进而将数据报表作为明细表存储在对应的目标数据桶中。本实施例的数据报表的处理方法,通过获取数据报表的类型,当数据报表的类型为日志报表数据时,进一步获取数据报表的时间信息,并根据时间信息获取数据报表所属的目标数据分区,接着,获取数据报表的用户标识或日志标识,并根据用户标识或日志标识进行数据分桶以生成数据报表所存储的目标数据桶,进而将数据报表作为明细表存储至目标数据分区的目标数据桶之中,由此,实现了日志报表数据的分区和分桶存储。通过按时间信息进行数据分区,能够方便用户访问特定时间的数据,以及方便用户进行时间维度上的数据变化趋势分析,加速数据访问,缩短数据查询耗时,提高数据访问效率。并且,通过在分区内进一步按照用户标识或日志标识进行数据分桶,能够将数据较为均匀地分布在各个存储节点上,避免了数据倾斜的问题,从而能够进一步加速数据访问。进一步地,在本申请实施例一种可能的实现方式中,如果数据报表的类型不为日志报表数据,则获取数据报表的主键标识或业务标识,并根据主键标识或业务标识进行数据分桶以生成数据报表所存储的目标数据桶。其中,主键标识能够用于唯一地标识数据报表中的某一条记录,业务标识比如可以是数据报表对应的业务的类型。相较于日志报表数据而言,其他类型的数据报表,比如数据库表,其数据量要小得多,并且通常只需向用户提供最新的全量数据即可,从而本申请实施例中,对于除日志报表数据外的其他类型的数据报表,可以基于全量数据进行单层数据划分,基于主键标识或业务标识进行哈希分桶,生成数据报表所存储的目标数据桶。通过对于除日志报表数据外的其他类型的数据报表,根据数据报表的主键标识或业务标识进行数据分桶,生成数据报表所存储的目标数据桶,实现了针对不同类型的数据报表依据不同的标识进行数据分桶,实现了有针对性的进行数据分桶,并且,便于数据统计,能够解决传统数据库分库分表带来的统计上的困难。在本申请实施例一种可能的实现方式中,对数据报表进行分桶存储之后,还可以针对每个目标数据桶中的数据进行聚合统计,以加速数据访问,方便用户进行数据变化趋势分析。下面结合附图2进行详细说明。图2是根据本申请第二实施例的数据报表的处理方法的流程示意图。如图2所示,在如图1所示实施例的基础上,步骤105之后,还可以包括以下步骤:步骤201,获取目标数据桶之中的明细表。一个目标数据桶中存储有一个明细表,一个明细表中记录了数据报表内与同一用户标识或同一日志标识相关的全部数据,比如,同一用户标识对应的不同类型的日志文件所包含的全部数据,可以作为一个明细表存储在该用户标识对应的目标数据桶中;又比如,不同用户标识对应的相同类型的日志文件所包含的全部数据,也可以作为一个明细表存储在该类型的目标数据桶中。从而,本实施例中,可以从目标数据桶中获取其中存储的明细表。步骤202,对目标数据桶之中的明细表进行统计以生成目标数据桶对应的第一级聚合表。本实施例中,获取了目标数据桶中的明细表之后,可以针对每个目标数据桶,对该目标数据桶中的明细表所包含的数据进行统计,生成目标数据桶对应的第一级聚合表。其中,在对明细表中的数据进行统计时,可以基于各种维度进行聚合统计。比如,明细表中的每一列数据均代表一个维度,可以对明细表中的每一列数据进行聚合统计,生成第一级聚合表,其中,第一级聚合表中包含对明细表中的每一列数据进行聚合统计得到的多个聚合数据。实际应用中,可以根据实际数据访问需求,通过sql语句对目标数据桶中的多个明细表进行聚合统计,实现对数据的变化趋势分析。大量实践经验表明,sql对于计算逻辑的维护成本和计算成本是最低的。本实施例的数据报表的处理方法,通过获取目标数据桶之中的明细表,并对目标数据桶之中的明细表进行统计以生成目标数据桶对应的第一级聚合表,由此,实现了对目标数据桶中明细数据的聚合统计,能够加速数据访问,便于对数据进行统计分析。在本申请实施例一种可能的实现方式中,对于聚合统计生成的聚合表,还可以再次进行聚合,以便于数据统计。下面结合附图3进行详细说明。图3是根据本申请第三实施例的数据报表的处理方法的流程示意图。如图3所示,在如图2所示实施例的基础上,步骤202之后,还可以包括以下步骤:步骤203,对目标数据分区之中的多个目标数据桶分别对应的多个第一级聚合表进行聚合,以生成第二级聚合表。本实施例中,对目标数据桶中的多个明细表进行统计生成对应的第一级聚合表之后,还可以进一步对目标数据分区中的多个目标数据桶分别对应的多个第一级聚合表进行聚合,生成第二级聚合表。目标数据分区中可以包括多个目标数据桶,每个目标数据桶可以对应一个第一级聚合表,从而,目标数据分区可以包括多个第一级聚合表,本实施例中,可以对多个第一级聚合表中的数据进行聚合,生成第二级聚合表。其中,对多个第一级聚合表进行聚合时,可以将每个第一级聚合表中的数据聚合在一起,生成一个第二级聚合表;或者,在对多个第一级聚合表进行统计时,可以对不同第一级聚合表中相同维度的数据进行聚合统计,得到一个第二级聚合表,从而得到多个不同的维度对应的多个第二级聚合表,其中,一个第二级聚合表中包含对各个第一级聚合表内同一维度数据的聚合统计结果,也就是说,各个第一级聚合表中同一个维度的数据被聚合统计在同一个第二级聚合表内。举例而言,目标数据分区包括目标数据桶a和目标数据桶b,目标数据桶a对应的第一级聚合表a中包括a、b和c三个维度的数据,目标数据桶b对应的第一级聚合表b中包括a、c和d三个维度的数据。该目标数据分区对应两个第一级聚合表a和b,可以进一步对第一级聚合表a和b进行聚合,生成多个第二级聚合表。具体地,第一级聚合表a中包含的维度a的数据与第一级聚合表b中包含的维度a的数据进行聚合,生成一个第二级聚合表ah,第一级聚合表a中包含的维度b的数据自身进行聚合,生成一个第二级聚合表bh,第一级聚合表a中包含的维度c的数据与第一级聚合表b中包含的维度c的数据进行聚合,,生成一个第二级聚合表ch,第一级聚合表b中包含的维度d的数据自身进行聚合,生成一个第二级聚合表dh。其中,第二级聚合表bh中包含的数据可以与第一级聚合表a中包含的维度b的数据相同,也可以根据第一级聚合表a中包含的维度b的数据进行聚合生成,第二级聚合表dh中包含的数据可以与第一级聚合表b中包含的维度d的数据相同,也可以根据第一级聚合表b中包含的维度d的数据进行聚合生成,本申请对此不作限制。或者,对第一级聚合表a和b进行聚合时,也可以将第一级聚合表a和b中各个维度的数据进行聚合,生成一个第二级聚合表,本申请对根据第一级聚合表聚合生成第二级聚合表的具体方式不作限制。通过对目标数据分区中的多个目标数据桶分别对应的多个第一级聚合表进行聚合,生成第二级聚合表,实现了对第一级聚合表中的聚合数据的聚合统计,实现了对目标数据分区上的数据的聚合统计,加深了数据聚合统计的层次,方便了用户获取不同层次的聚合数据。进一步地,在本申请实施例一种可能的实现方式中,如图3所示,步骤203之后,还可以包括以下步骤:步骤204,对多个目标数据分区分别对应的多个第二级聚合表进行聚合,以生成总聚合表。本实施例中,对目标数据分区中的多个目标数据桶分别对应的多个第一级聚合表进行聚合生成第二级聚合表之后,可以进一步对多个目标数据分区分别对应的多个第二级聚合表进行聚合,生成一个总聚合表。通过对多个目标数据分区分别对应的多个第二级聚合表进行聚合生成总聚合表,实现了对不同的目标数据分区中的数据的聚合统计,由于不同的目标数据分区是根据时间信息划分的,通过对不同的目标数据分区中的数据进行聚合统计,不仅进一步加深了数据聚合的层次,还方便了分析数据在时间维度上的变化趋势。本实施例的数据报表的处理方法,通过对目标数据分区之中的多个目标数据桶分别对应的多个第一级聚合表进行聚合生成第二级聚合表,并对多个目标数据分区分别对应的多个第二级聚合表进行聚合生成总聚合表,实现了不同层次的数据的聚合,有利于进行数据统计,提高数据访问效率。本申请实施例中,明细表具有第一存留时间,第一级聚合表具有第二存留时间,第二级聚合表具有第三存留时间,其中,第一存留时间小于第二存留时间,第二存留时间小于第三存留时间。比如,第一存留时间可以为半年至一年,第二存留时间可以为一年至五年,第三存留时间可以为五年至十年。本申请实施例中,总聚合表统计了多个目标数据分区的数据,因此其存留时间可以更长,比如可以永久保存总聚合表。由此,实现了为不同层次的数据表设置不同时长的存留时间,由于聚合表的数据量相较于明细表的数据量小,为聚合表设置较长的存留时间,能够在保证数据访问功能的同时,节省存储节点的存储空间。在本申请实施例一种可能的实现方式中,当第一存留时间达到时,则将第一存留时间对应的明细表删除;当第二存留时间达到时,则将第二存留时间对应的第一级聚合表删除;当第三存留时间达到时,则将第三存留时间对应的第二级聚合表删除。由此,通过在各层次的数据表对应的存留时间到达时,删除对应的数据表,能够避免长期保存所有的数据表对存储节点的存储空间的占用,释放存储节点的存储空间,保证存储节点的存储能力。实际应用中,本申请实施例提供的数据报表的处理方法,可以基于百度公司开发的并行数据库doris实现。doris是一款基于大规模并行处理(massivelyparallelprocessor,mpp)技术的交互式sql数据库,可以通过mysql客户端进行通信,主要目标是支持稳定的、在线的、交互式的数据报表和数据多维分析服务。在doris的存储引擎中,用户数据被水平划分为若干个数据分片(tablet,也称作数据分桶),各个tablet在物理上是独立存储的,tablet是数据移动、复制等操作的最小物理存储单元。多个tablet在逻辑上归属于不同的数据分区(partition),partition在物理上也是独立的,partition可以视为是逻辑上最小的管理单元,数据的导入与删除,都可以或仅能对一个partition进行。一个tablet只属于一个partition,而一个partition可以包含若干个tablet,若干个partition组成一个表(table)。doris支持两层的数据划分,其中,第一层是数据分区,仅支持范围划分方式,第二层是数据分桶,仅支持哈希划分方式。范围划分和哈希划分都是目前比较成熟的数据划分方式,此处不作过多描述。通常,单个数据分桶的数据量在1g~10g的范围内时,能够达到最佳的聚合查询效果。对于一个表而言,所包含的数据分桶的总数量为该表中包含的数据分区的个数与每个数据分区所包含的数据分桶的个数的乘积。利用doris的上述特性,可以建立一张分布式集群范围内无限大的表,该表可以包括多个数据分区,每个数据分区可以包括多个数据分桶。对导入的数据进行分区和分桶存储时,可以根据数据的类型进行不同方式的划分,下面一一说明如下:(1)日志表数据量每天增长巨大,可以建立日期维度的分区,同时在建表语句中指定distributedbyhash(`user_id`),即可按照用户id维度进行哈希分桶,这样能够将数据较为均匀的分布在各个存储节点上,避免数据倾斜的问题,从而加速数据访问;(2)数据库表不同于日志表,数据库表的数据量相较于日志表的数据量要小很多,而且只需给用户最新的全量数据即可,因此可以基于全量数据进行单层数据划分,在主键标识或者业务标识维度上进行哈希分桶,这样能够解决传统数据库分库分表带来的统计上的困难,这种分桶方式可以理解为一张大表中融合了对应传统的数据库的分表数据。(3)对于聚合数据表,由于聚合数据表中忽略了很多明细信息,聚合数据表的行数多但是数据量小,仅用来存储如页面浏览量(pageview,pv)、独立访问者数量(uniquevisitors,uv)之类的简单聚合数据,因此基于key维度进行哈希分桶即可。基于上述数据划分方式,doris比传统的关系型数据库更适合开发海量级数据的报表系统。doris可以通过mysql客户端进行通信,因此在具体实现本申请的实施例时,可以通过mysql客户端连接doris,建立明细表和聚合表,其中,明细表用于详细记录每一条日志的信息,数据量级大,保存日期一般为半年到一年,而聚合表则是基于明细数据做的聚合统计表,数据量级小,数据可以永久保存。对于每一个doris服务节点都会部署一个数据导入模块,可以导入分布式文件系统(hadoopdistributedfilesystem,hdfs)的数据,百度云的百度对象存储(baiduobjectstorage,bos)数据和亚马逊的简单存储业务(simplestorageservice,s3)的对像存储数据。导入的数据可以作为明细表存储在对应的数据分桶中,并可以通过sql语句对doris明细表中的数据进行各种维度的聚合统计,并将聚合数据写入聚合表中。由此,能够加速数据访问,便于数据变化趋势分析。图4是实现本申请实施例的数据报表的处理方法的工程流程图。如图4所示,可以通过日志传输工具logagent来传输后端埋点业务日志、前端埋点业务日志和客户端埋点业务日志,并将日志临时存储到hdfs中,hdfs具有成本低、技术成熟、容错性高、数据吞吐量高、流式数据访问等优势,因此非常适用于日志传输存储场景中。之后,通过spark或者hadoop去读取hdfs中的数据,并根据日志格式(binlog)使用正则表达式进行字段拆分并写入到doris中,doris会对导入的数据进行分区、分桶存储。对于指定需求的数据统计,可以编写sql并提交给doris,即可实现统计计算结果并直接存储到doris中,以便于数据重复使用。或者,也可以通过编写sql语句提交给doris以统计计算结果,并直接向用户返回统计结果,以实现交互式查询。比如,假设需要统计2020-05-26日整站的pv量和uv量并回写至doris中,则可以通过sql的求和语句“select‘2020-05-26’,’demo’,’总pv’,sum(pv)from*wheredt=‘2020-05-26’andtype=’pv’andaction=’view’”,以及通过sql的计数语句“select‘2020-05-26’,’demo’,’总uv’,count(distinctbaiduid)from*wheredt=‘2020-05-26’andtype=’pv’andaction=’view’”,来分别统计站点在2020-05-26日的pv量和uv量,其中,“*”表示站点的日志表的名称,并通过sql的插入语句insert将统计结果回写至指定的表中,以便于数据重复查询使用。或者,也可以通过sql语句“selectsum(pv)aspv,count(distinctbaiduid)asuvfrom*wheredt=‘2020-05-26’andtype=’pv’andaction=’view’”来统计日志表“*”中2020-05-26日的pv量和uv量,并直接显示统计结果给用户。由于doris支持千万量级的数据秒级同步插入,因此用户只需关注自己的计算逻辑即可,基本不用考虑插入性能的影响。由于doris支持mysql协议,因此支持mysql协议的bi报表系统可以直接从doris中查询明细日志或者查询聚合数据,提高了数据访问效率。根据本申请的实施例,本申请还提供了一种数据报表的处理装置。图5是根据本申请第四实施例的数据报表的处理装置的结构示意图。如图5所示,该数据报表的处理装置40包括:第一获取模块410、第二获取模块420、第三获取模块430、第一生成模块440和存储模块450。其中,第一获取模块410,用于获取数据报表的类型。第二获取模块420,用于如果所述数据报表的类型为日志报表数据,则获取所述数据报表的时间信息。第三获取模块430,用于根据所述时间信息获取所述数据报表所属的目标数据分区。第一生成模块440,用于获取所述数据报表的用户标识或日志标识,并根据所述用户标识或日志标识进行数据分桶以生成所述数据报表所存储的目标数据桶。存储模块450,用于将所述数据报表作为明细表存储至所述目标数据分区的所述目标数据桶之中。进一步地,在本申请实施例一种可能的实现方式中,如图6所示,在如图5所示实施例的基础上,该数据报表的处理装置40还包括:第四获取模块460,用于获取所述目标数据桶之中的明细表;第一统计模块470,用于对所述目标数据桶之中的所述明细表进行统计以生成所述目标数据桶对应的第一级聚合表。进一步地,如图7所示,在如图6所示实施例的基础上,该数据报表的处理装置40还包括:第二统计模块480,用于对所述目标数据分区之中的多个目标数据桶分别对应的所述多个第一级聚合表进行聚合,以生成第二级聚合表。进一步地,如图7所示,该数据报表的处理装置40还包括:第三统计模块490,用于对所述多个目标数据分区分别对应的所述多个第二级聚合表进行聚合,以生成总聚合表。本申请实施例中,明细表具有第一存留时间,所述第一级聚合表具有第二存留时间,所述第二级聚合表具有第三存留时间,其中,所述第一存留时间小于所述第二存留时间,所述第二存留时间小于所述第三存留时间。在本申请实施例一种可能的实现方式中,如图7所示,该数据报表的处理装置40还包括:删除模块400。其中,删除模块400用于:当所述第一存留时间达到时,则将所述第一存留时间对应的所述明细表删除;当所述第二存留时间达到时,则将所述第二存留时间对应的所述第一级聚合表删除;以及,当所述第三存留时间达到时,则将所述第三存留时间对应的所述第二级聚合表删除。在本申请实施例一种可能的实现方式中,如图8所示,在如图5所示实施例的基础上,该数据报表的处理装置40还包括:第二生成模块4100,用于如果所述数据报表的类型不为日志报表数据,则获取所述数据报表的主键标识或业务标识,并根据所述主键标识或业务标识进行数据分桶以生成所述数据报表所存储的目标数据桶。需要说明的是,前述对数据报表的处理方法实施例的解释说明,也适用于该实施例的数据报表的处理装置,其实现原理类似,此处不再赘述。本申请实施例的数据报表的处理装置,通过获取数据报表的类型,当数据报表的类型为日志报表数据时,进一步获取数据报表的时间信息,并根据时间信息获取数据报表所属的目标数据分区,接着,获取数据报表的用户标识或日志标识,并根据用户标识或日志标识进行数据分桶以生成数据报表所存储的目标数据桶,进而将数据报表作为明细表存储至目标数据分区的目标数据桶之中,由此,实现了日志报表数据的分区和分桶存储。通过按时间信息进行数据分区,能够方便用户访问特定时间的数据,以及方便用户进行时间维度上的数据变化趋势分析,加速数据访问,缩短数据查询耗时,提高数据访问效率。并且,通过在分区内进一步按照用户标识或日志标识进行数据分桶,能够将数据较为均匀地分布在各个存储节点上,避免了数据倾斜的问题,从而能够进一步加速数据访问。根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。如图9所示,是用来实现本申请实施例的数据报表的处理方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。如图9所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图9中以一个处理器701为例。存储器702即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据报表的处理方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据报表的处理方法。存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据报表的处理方法对应的程序指令/模块(例如,附图5所示的第一获取模块410、第二获取模块420、第三获取模块430、第一生成模块440和存储模块450)。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据报表的处理方法。存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据执行数据报表的处理方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至执行数据报表的处理方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。执行数据报表的处理方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图9中以通过总线连接为例。输入装置703可接收输入的数字或字符信息,以及产生与执行数据报表的处理方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决传统物理主机与vps(virtualprivateserver,虚拟专用服务器)服务中,存在的管理难度大,业务扩展性弱的缺陷。根据本申请实施例的技术方案,通过按时间信息进行数据分区,能够方便用户访问特定时间的数据,以及方便用户进行时间维度上的数据变化趋势分析,加速数据访问,缩短数据查询耗时,提高数据访问效率。并且,通过在分区内进一步按照用户标识或日志标识进行数据分桶,能够将数据较为均匀地分布在各个存储节点上,避免了数据倾斜的问题,从而能够进一步加速数据访问。应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1