处理数据的方法、装置、设备和计算机可读介质

文档序号:406833 发布日期:2021-12-17 浏览:22次 >En<

阅读说明:本技术 处理数据的方法、装置、设备和计算机可读介质 (Method, device, equipment and computer readable medium for processing data ) 是由 陈洪健 钱叶 屠志强 于 2021-09-16 设计创作,主要内容包括:本发明公开了处理数据的方法、装置、设备和计算机可读介质,涉及计算机技术领域。该方法的一具体实施方式包括:根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。该实施方式能够缩短数据推送过程的空窗期,以及降低数据波动。(The invention discloses a method, a device, equipment and a computer readable medium for processing data, and relates to the technical field of computers. One embodiment of the method comprises: deleting data corresponding to the table partitions in the version table according to the table partitions in the data source, wherein the table partitions are preset according to service requirements; pushing data of a table partition in a data source to a corresponding table partition in the version table, wherein the format of the version table is consistent with that of a formal table; and after the data in the corresponding table partition in the version table is verified successfully, copying the data in the corresponding table partition in the version table into the formal table. The embodiment can shorten the blank window period of the data pushing process and reduce data fluctuation.)

处理数据的方法、装置、设备和计算机可读介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种处理数据的方法、装置、设备和计算机可读介质。

背景技术

数据推数是数据链路中重要的一环。目前普遍使用的推数方法是先从数据源中获取所需要的数据,然后根据分区字段导入数据,若该分区下已有数据,则先删除该分区下的数据然后推数。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:因为需要先删除数据,然后经历一段时间的推数,导致数据存在空窗期和剧烈波动。

发明内容

有鉴于此,本发明实施例提供一种处理数据的方法、装置、设备和计算机可读介质,能够缩短数据推送过程的空窗期,以及降低数据波动。

为实现上述目的,根据本发明实施例的一个方面,提供了一种处理数据的方法,包括:

根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;

将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;

校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。

所述校验成功所述版本表中对应表分区内的数据,包括:

检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同;

确认所述版本表中对应表分区中数据的业务指标,在业务阈值范围内。

所述检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同,包括:

所述版本表中对应表分区的数据量与所述数据源中的表分区的数据量不同,则确定所述版本表中对应表分区中每个分片的数据量以获知分片数据量不同的分片;

基于所述分片数据量不同的分片,重新从所述数据源中表分区中的分片中推数至所述版本表,直至检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同。

所述确定所述版本表中对应表分区中每个分片的数据量,包括:

针对所述版本表中每个分片的高离散度字段和索引字段,依次进行哈希处理,以确定所述版本表中对应表分区中每个分片的数据量。

所述复制所述版本表中对应表分区内的数据到所述正式表中,包括:

检查所述正式表中与所述数据源中的表分区对应的分区,未存储数据;

复制所述版本表中对应表分区内的数据到所述正式表中。

所述复制所述版本表中对应表分区内的数据到所述正式表中,包括:

检查所述正式表中与所述数据源中的表分区对应的分区,已存储数据;

将已存储的数据存储至缓存表,并删除所述已存储的数据;

复制所述版本表中对应表分区内的数据到所述正式表中。

所述复制所述版本表中对应表分区内的数据到所述正式表中之后,还包括:

检查所述正式表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同。

根据本发明实施例的第二方面,提供了一种处理数据的装置,包括:

删除模块,用于根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;

推送模块,用于将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;

处理模块,用于校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。

根据本发明实施例的第三方面,提供了一种处理数据的电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的方法。

根据本发明实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述的方法。

上述发明中的一个实施例具有如下优点或有益效果:根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。通过版本表,将数据源中的数据复制至正式表中,进而缩短数据推送过程的空窗期,以及降低数据波动。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合

具体实施方式

包括:根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。该实施方式能够缩短数据推送过程的空窗期,以及降低数据波动。 ">

为遏制恶意抓取行为,请关注公众号获取访问口令


二维码

微信扫二维码关注公众号,发送“口令”获取

提交

提示:只需正确输入一次口令,该弹窗便不再弹出!

CN113807054A - 处理数据的方法、装置、设备和计算机可读介质 - Google Patents

处理数据的方法、装置、设备和计算机可读介质 Download PDF

Info

Publication number
CN113807054A
CN113807054A CN202111084933.XA CN202111084933A CN113807054A CN 113807054 A CN113807054 A CN 113807054A CN 202111084933 A CN202111084933 A CN 202111084933A CN 113807054 A CN113807054 A CN 113807054A
Authority
CN
China
Prior art keywords
data
partition
version
formal
partitions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111084933.XA
Other languages
English (en)
Inventor
陈洪健
钱叶
屠志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202111084933.XA priority Critical patent/CN113807054A/zh
Publication of CN113807054A publication Critical patent/CN113807054A/zh
Pending legal-status Critical Current

Links

  • 238000005192 partition Methods 0.000 claims abstract description 203
  • 230000000875 corresponding Effects 0.000 claims abstract description 142
  • 238000004590 computer program Methods 0.000 claims description 9
  • 239000006185 dispersion Substances 0.000 claims description 9
  • 238000000034 method Methods 0.000 abstract description 21
  • 238000010586 diagram Methods 0.000 description 12
  • 239000000203 mixture Substances 0.000 description 9
  • 230000002159 abnormal effect Effects 0.000 description 4
  • 230000003287 optical Effects 0.000 description 4
  • 238000004904 shortening Methods 0.000 description 4
  • 230000004048 modification Effects 0.000 description 3
  • 238000006011 modification reaction Methods 0.000 description 3
  • 239000000835 fiber Substances 0.000 description 2
  • 238000006062 fragmentation reaction Methods 0.000 description 2
  • 230000000644 propagated Effects 0.000 description 2
  • 239000004065 semiconductor Substances 0.000 description 2
  • 210000003666 Nerve Fibers, Myelinated Anatomy 0.000 description 1
  • 238000004364 calculation method Methods 0.000 description 1
  • 239000000969 carrier Substances 0.000 description 1
  • 230000000694 effects Effects 0.000 description 1
  • 239000003365 glass fiber Substances 0.000 description 1
  • 239000004973 liquid crystal related substance Substances 0.000 description 1
  • 230000002035 prolonged Effects 0.000 description 1
  • 238000010223 real-time analysis Methods 0.000 description 1
  • 238000005096 rolling process Methods 0.000 description 1
  • 238000006467 substitution reaction Methods 0.000 description 1

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control

Abstract

本发明公开了处理数据的方法、装置、设备和计算机可读介质,涉及计算机技术领域。该方法的一具体实施方式包括:根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。该实施方式能够缩短数据推送过程的空窗期,以及降低数据波动。

Description

处理数据的方法、装置、设备和计算机可读介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种处理数据的方法、装置、设备和计算机可读介质。

背景技术

数据推数是数据链路中重要的一环。目前普遍使用的推数方法是先从数据源中获取所需要的数据,然后根据分区字段导入数据,若该分区下已有数据,则先删除该分区下的数据然后推数。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:因为需要先删除数据,然后经历一段时间的推数,导致数据存在空窗期和剧烈波动。

发明内容

有鉴于此,本发明实施例提供一种处理数据的方法、装置、设备和计算机可读介质,能够缩短数据推送过程的空窗期,以及降低数据波动。

为实现上述目的,根据本发明实施例的一个方面,提供了一种处理数据的方法,包括:

根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;

将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;

校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。

所述校验成功所述版本表中对应表分区内的数据,包括:

检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同;

确认所述版本表中对应表分区中数据的业务指标,在业务阈值范围内。

所述检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同,包括:

所述版本表中对应表分区的数据量与所述数据源中的表分区的数据量不同,则确定所述版本表中对应表分区中每个分片的数据量以获知分片数据量不同的分片;

基于所述分片数据量不同的分片,重新从所述数据源中表分区中的分片中推数至所述版本表,直至检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同。

所述确定所述版本表中对应表分区中每个分片的数据量,包括:

针对所述版本表中每个分片的高离散度字段和索引字段,依次进行哈希处理,以确定所述版本表中对应表分区中每个分片的数据量。

所述复制所述版本表中对应表分区内的数据到所述正式表中,包括:

检查所述正式表中与所述数据源中的表分区对应的分区,未存储数据;

复制所述版本表中对应表分区内的数据到所述正式表中。

所述复制所述版本表中对应表分区内的数据到所述正式表中,包括:

检查所述正式表中与所述数据源中的表分区对应的分区,已存储数据;

将已存储的数据存储至缓存表,并删除所述已存储的数据;

复制所述版本表中对应表分区内的数据到所述正式表中。

所述复制所述版本表中对应表分区内的数据到所述正式表中之后,还包括:

检查所述正式表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同。

根据本发明实施例的第二方面,提供了一种处理数据的装置,包括:

删除模块,用于根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;

推送模块,用于将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;

处理模块,用于校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。

根据本发明实施例的第三方面,提供了一种处理数据的电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的方法。

根据本发明实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述的方法。

上述发明中的一个实施例具有如下优点或有益效果:根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。通过版本表,将数据源中的数据复制至正式表中,进而缩短数据推送过程的空窗期,以及降低数据波动。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的处理数据的方法的主要流程的示意图;

图2是根据本发明实施例的校验成功版本表中对应表分区内的数据的流程示意图;

图3是根据本发明实施例的检查数据量相同的流程示意图;

图4是根据本发明实施例的复制版本表中对应表分区内的数据到正式表中的流程示意图;

图5是根据本发明实施例的另一个复制版本表中对应表分区内的数据到正式表中的流程示意图;

图6是根据本发明实施例的Clickhouse处理数据的流程示意图;

图7是根据本发明实施例的处理数据的装置的主要结构的示意图;

图8是本发明实施例可以应用于其中的示例性系统架构图;

图9是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

目前,普遍使用的推数方法是先从数据源中获取所需要的数据。Clickhouse作为一款实时分析型数据库,本身承担的更多的是查询的功能,这就需要业务数据经过数据加工后存储在MySQL、Hive、Kafka等数据库中,然后再将结果数据传入Clickhouse中,因此数据推数是数据链路中重要的一环。

然后,根据Clickhouse中的分区字段往Clickhouse中导入数据,若该分区下已有数据,则先删除该分区下的数据然后再推数。

然而,数据推送导致数据存在空窗期和剧烈波动。。

为了解决数据存在空窗期和剧烈波动,可以采用以下本发明实施例中的技术方案。

参见图1,图1是根据本发明实施例的处理数据的方法主要流程的示意图,通过版本表将数据源中的数据推送至正式表中。如图1所示,具体包括以下步骤:

S101、根据数据源中的表分区,删除版本表中对应表分区的数据,表分区是根据业务需求预设的。

在本发明实施例中,在数据源推数过程中增加版本表,进而数据源中的数据,通过版本表推送至正式表中。其中,版本表的格式与正式表的格式一致,以确保版本表的数据能直接推送至正式表中存储。作为一个示例,正式表包括Clickhouse正式表。

对于数据源来说,数据源可以是以下一种,Hive、MYSQL和KAFKA。多种数据源均能够适用于本发明实施例中的技术方案。

数据源中包括多个表分区,表分区是根据业务需求预设的。作为一个示例,对于业务需求1涉及的数据存储在表分区A1中,对于业务需求2涉及的数据存储在表分区A2中。设置数据源中的表分区,可以提高处理数据的效率。

版本表的作用是传输数据源中数据至正式表,那么在版本表中包括多个表分区。版本表中表分区与数据源中的表分区相对应。作为一个示例,数据源中的表分区包括A1、A2和A3,版本表中表分区包括B1、B2和B3。其中,A1对应B1,A2对应B2,A3对应B3。

为了将数据源中的表分区数据推送至版本表中对应表分区中,以提高推送的成功率,需要删除版本表中对应表分区的数据。由于版本表中数据常用于推送至正式表,在已将版本表中数据推送至正式表后,删除版本表中对应表分区的数据不会影响处理数据。

作为一个示例,数据源是Hive,默认的表分区是dt。根据Hive中的dt,删除版本表中dt对应分区的数据。

S102、将数据源中的表分区的数据推送到版本表中对应表分区,版本表的格式与正式表的格式一致。

删除版本表中对应表分区的数据之后,就可以将数据源中的表分区的数据推送到版本表中对应表分区。其中,版本表的格式与正式表的格式一致,以确保版本表的数据能直接推送至正式表中存储。

作为一个示例,数据源是Hive,默认的表分区是dt。删除版本表中dt对应分区的数据后,将Hive中dt的数据直接推到版本表中dt对应分区中。

S103、校验成功版本表中对应表分区内的数据后,复制版本表中对应表分区内的数据到正式表中。

复制版本表中对应表分区内的数据到正式表的前提条件是,校验成功版本表中对应表分区内的数据。也就是说,只有在版本表中对应表分区内的数据与数据源中的表分区的数据一致的情况下,才会将版本表中的数据复制到正式表,以提高正式表数据的准确性。

参见图2,图2是根据本发明实施例的校验成功版本表中对应表分区内的数据的流程示意图,具体包括以下步骤:

S201、检查版本表中对应表分区中每个分片的数据量与数据源中的表分区中每个分片的数据量相同。

在本发明实施例中,通过数据量来检测版本表。具体来说,检测推入版本表中的数据量是否等于数据源的输出数据量。

若推入版本表中的数据量等于数据源的输出数据量,则确定版本表中对应表分区中每个分片的数据量与数据源中的表分区中每个分片的数据量相同。

若推入版本表中的数据量不等于数据源的输出数据量,其原因是数据多推或数据漏推。为了保证数据的准确性,需要重新推数以保持数据的一致性。

已有技术中多采用,全量重推数据源中的输出数据至版本表中。对于数据量较大的情况,全量重推的时间成本很高,且极大概率再次出现多推或漏推,进而延长推数的过程。

经多次实践获知,推数过程中出现多或漏推情况时,大概率是因为系统原因而导致其中某些分片数据出现错误。那么,在本发明实施例中,以分片为单位数据回滚以重新推数,相较于全量重推,可以大幅缩短整个推数的周期。

参见图3,图3是根据本发明实施例的检查数据量相同的流程示意图,具体包括以下步骤:

S301、版本表中对应表分区的数据量与数据源中的表分区的数据量不同,则确定版本表中对应表分区中每个分片的数据量以获知分片数据量不同的分片。

首先,对版本表中对应表分区中的数据分片处理,即将上述数据切分为多片。其中,分片数量是基于分布式机器节点预先设置的。然后,以片为单位核查每个分片的数据量。

针对版本表中每个分片的高离散度字段和索引字段,依次进行哈希处理,以确定版本表中对应表分区中每个分片的数据量。其中,高离散度字段是指将同一分片上的数据均匀拆分的得到的数据。

高离散度字段均匀分布在每个分片上,从而避免数据倾斜。数据倾斜是指:缓存数据分散度不够,导致大量的缓存数据集中到了一台或者几台服务节点上。

作为一个示例,正式表是Clickhouse正式表。在对Clickhouse推数时,按照分片数量切分数据。然后,按照公式1进行HASH处理,得到分片的数据量。

COALCASE(CAST(ABS(HASH(A,B,高离散度的字段))as int)%分片数量,0)公式1

其中,A和B为索引字段,当索引字段的离散度不高时,增加一个或者多个高离散度的字段。HASH()是计算哈希值函数。ABS()是计算哈希值的绝对值函数。CAST()是将绝对值函数的数值转化成int类型。COALCASE()的作用是:如果CAST()的结果为null,则返结果0。

确定版本表中对应表分区中每个分片的数据量,在确定数据源中的表区分中每个分片的数据量,通过比较版本表和数据源中每个分片的数据量,获知分片数据量不同的分片。

S302、基于分片数据量不同的分片,重新从数据源中表分区中的分片中推数至版本表,直至检查版本表中对应表分区中每个分片的数据量与数据源中的表分区中每个分片的数据量相同。

定位版本表中对应表分区中分片数据量不同的分片后,就可以从数据源中推送该分片的数据,而非全部数据。即,重新从数据源中表分区中的分片中推数至版本表。推送分片数据后,再次检查该分片的数据量,若版本表中对应表分区中该分片的数据量,与数据源中的表分区中该分片的数据量相同,则检查结束;否则,需要再次推送该分片的数据。

在图3的实施例中,定位数据量不同的分片,并对需要推到该分片下的数据重新推数。对于数据量较大且推数容易出现问题的数据表而言,可以极大的提高推数的成功率,减少重新推数的时间损耗。

S202、确认版本表中对应表分区中数据的业务指标,在业务阈值范围内。

检查每个分片的数据量相同后,则需要确认业务指标是否在业务阈值范围内。具体来说,选择业务指标,进而依据业务阈值范围进行检查。

作为一个示例,业务指标包括页面访问量(PV)。对版本表中对应表分区中数据的PV做sum()计算,并以之前时间段的数据作为业务阈值范围。若计算得到的值不在业务阈值范围内,则数据异常。无需将版本表中的数据复制到正式表中;若计算得到的值在业务阈值范围内,则数据正常,将版本表中的数据复制到正式表中。

在图2的实施例中,通过检查每个分片的数据量,以及业务指标,校验版本表的数据,从而保障版本表数据的准确性。

校验成功版本表中对应表分区内的数据后,就可以复制版本表中对应表分区内的数据到正式表中。

参见图4,图4是根据本发明实施例的复制版本表中对应表分区内的数据到正式表中的流程示意图,具体包括以下步骤:

S401、检查正式表中与数据源中的表分区对应的分区,未存储数据。

校验成功版本表中对应表分区内的数据后,就需要检查正式表中与数据源中的表分区对应的分区是否存储数据,以确定是否直接将版本表中的数据复制到正式表中。

检查正式表中与数据源中的表分区对应的分区,未存储数据的情况下,可以执行S402。

S402、复制版本表中对应表分区内的数据到正式表中。

检查完毕后,将版本表中对应表分区内的数据,复制到正式表中,并在正式表中添加对应的子分区。其中,复制可以通过ATTACH方式实现。

上述复制过程是采用本地表至本地表的过程,而非采用分布式表。这样能够减少网络开销,进一步缩短正式表数据更新的空窗期。作为一个示例,ATTACH方式包括:

ALTER TABLE A_local ATTACH PARTITION(dt)FROM A_tmp_local。

在图4的实施例中,通过版本表到正式表的复制方式,减少网络开销,进而缩短正式表数据更新的空窗期。

参见图5,图5是根据本发明实施例的另一个复制版本表中对应表分区内的数据到正式表中的流程示意,具体包括以下步骤:

S501、检查正式表中与数据源中的表分区对应的分区,已存储数据。

检查正式表中与数据源中的表分区对应的分区,已存储数据,则无法直接将版本表中的数据复制到正式表中。

S502、将已存储的数据存储至缓存表,并删除已存储的数据。

在正式表中与数据源中的表分区对应的分区已存储数据的情况下,可以将正式表中所对应的分区中数据转存至缓存表,然后删除正式表中所对应的分区中数据。

作为一个示例,将正式表中所对应的分区中数据,通过ATTACH方式转存至缓存表。这样做的目的在于:备份正式表中原有数据。当正式表数据出现异常时,可以有效的实现数据回退。

在本发明的一个实施例中,正式表出现异常,则按照缓存表中的数据执行数据回退。

正式表备份完成以后,对正式表中所对应的分区进行DROP操作,然后检查每一个节点中该分区下的数据是否彻底删除,避免未删除的数据对新数据造成影响。

S503、复制版本表中对应表分区内的数据到正式表中。

类似于S402,检查完毕后,将版本表中对应表分区内的数据,复制到正式表中,并在正式表中添加对应的子分区。其中,复制可以通过ATTACH方式实现。

在图5的实施例中,通过缓存表存储正式表中已有数据,以便实现数据回退。还通过版本表到正式表的复制方式,减少网络开销,进而缩短正式表数据更新的空窗期。

最后,检查正式表中对应表分区的数据量与数据源中的表分区的数据量。若上述两个分区的数据量相同,则完成数据源至正式表的数据推送;若上述两个分区的数据量不同,则先通过缓存表进行数据回退,然后退出推数流程。

在本发明的一个实施例中,为了校验数据量,避免数据源到正式表的重新推数。可以按照分片,检查正式表中对应表分区的数据量与数据源中的表分区的数据量。

具体来说,检查正式表中对应表分区中每个分片的数据量与数据源中的表分区中每个分片的数据量相同。其中,具体比较方式采用图3实施例中的技术方案。

在上述本发明的实施例中,根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。通过版本表,将数据源中的数据复制至正式表中,进而缩短数据推送过程的空窗期,以及降低数据波动。

采用本发明实施例,一方面,通过建立版本表的方式避免长时间的推数对正常表更新,极大的减少了用户对推数过程的感知。另一方面,采用分片的数据校验,这样以片为单位实现数据回滚,从而避免全量数据回滚造成的数据波动。

参见图6,图6是根据本发明实施例的Clickhouse处理数据的流程示意图。

图6中的数据源是Hive,默认的表分区是dt。从Hive向Clickhouse正式表推数过程中,增加向版本表推数的过程。

首先,根据Hive中的dt,删除版本表中对应dt分区的数据。然后,提取Hive中的数据,并直接推到版本表中。版本表中对应分区数据经数据量校验和业务指标校验均成功后,数据推送至Clickhouse正式表。

其中,数据量校验是以片为单位校验,分片数据校验失败的情况下执行分片数据回滚,从而大幅度缩短推数的周期。

此外,设立缓存表以存储正式表的原有数据。在正式表数据出现异常时,可执行数据回退以还原正式表。

参见图7,图7是根据本发明实施例的处理数据的装置的主要结构的示意图,处理数据的装置可以实现处理数据的方法,如图7所示,处理数据的装置具体包括:

删除模块701,用于根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;

推送模块702,用于将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;

处理模块703,用于校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。

在本发明的一个实施例中,处理模块703,具体用于检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同;

确认所述版本表中对应表分区中数据的业务指标,在业务阈值范围内。

在本发明的一个实施例中,处理模块703,具体用于所述版本表中对应表分区的数据量与所述数据源中的表分区的数据量不同,则确定所述版本表中对应表分区中每个分片的数据量以获知分片数据量不同的分片;

基于所述分片数据量不同的分片,重新从所述数据源中表分区中的分片中推数至所述版本表,直至检查所述版本表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同。

在本发明的一个实施例中,处理模块703,具体用于针对所述版本表中每个分片的高离散度字段和索引字段,依次进行哈希处理,以确定所述版本表中对应表分区中每个分片的数据量。

在本发明的一个实施例中,处理模块703,具体用于检查所述正式表中与所述数据源中的表分区对应的分区,未存储数据;

复制所述版本表中对应表分区内的数据到所述正式表中。

在本发明的一个实施例中,处理模块703,具体用于检查所述正式表中与所述数据源中的表分区对应的分区,已存储数据;

将已存储的数据存储至缓存表,并删除所述已存储的数据;

复制所述版本表中对应表分区内的数据到所述正式表中。

在本发明的一个实施例中,处理模块703,还用于检查所述正式表中对应表分区中每个分片的数据量与所述数据源中的表分区中每个分片的数据量相同。

图8示出了可以应用本发明实施例的处理数据的方法或处理数据的装置的示例性系统架构800。

如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。

需要说明的是,本发明实施例所提供的处理数据的方法一般由服务器805执行,相应地,处理数据的装置一般设置于服务器805中。

应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。

以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括删除模块、推送模块和处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,删除模块还可以被描述为“用于根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:

根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;

将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;

校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。

根据本发明实施例的技术方案,根据数据源中的表分区,删除版本表中对应表分区的数据,所述表分区是根据业务需求预设的;将数据源中的表分区的数据推送到所述版本表中对应表分区,所述版本表的格式与正式表的格式一致;校验成功所述版本表中对应表分区内的数据后,复制所述版本表中对应表分区内的数据到所述正式表中。通过版本表,将数据源中的数据复制至正式表中,进而缩短数据推送过程的空窗期,以及降低数据波动。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

18页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于编辑信息的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!