CN112069162A - 流计算的数据处理方法、装置、计算机设备和存储介质 - Google Patents
流计算的数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112069162A CN112069162A CN202011243661.9A CN202011243661A CN112069162A CN 112069162 A CN112069162 A CN 112069162A CN 202011243661 A CN202011243661 A CN 202011243661A CN 112069162 A CN112069162 A CN 112069162A
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- processing
- value
- hashing
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机设备和存储介质。所述方法通过采集待处理数据,从待处理数据中提取关键值,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,并将目标散列值映射到预先创建的位数组中对应的位,若位数组中对应的位不存在数据,则表示待处理数据为新增数据,从而根据业务***的数据处理请求对待处理数据进行处理,并向业务***返回对待处理数据进行处理后得到的目标数据,因只对新增数据进行处理,从而解决了因数据重复导致流处理的计算结果不可靠的问题。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种流计算的数据处理方法、装置、计算机设备和存储介质。
背景技术
随着数据处理技术的发展,在越来越多的领域出现了对海量、高速数据进行实时处理的需求,由于此类需求往往超出传统数据处理技术的能力,基于此,分布式流处理模式应运而生。如Flink(分布式流数据流引擎)作为新一代分布式流处理引擎,从上游***(如CDC软件、消息队列或文件采集***)拉取数据,并基于不同层面API或类库的请求对数据进行处理以实现高吞吐率和低延迟,且可以应用于各种复杂实时场景。
传统技术中,若Flink在数据处理过程中任务失败,则会从上次最近的checkpoint(检查点)重新拉起任务,并重新读取上游数据进行后续处理。但是,若上游***如CDC软件、消息队列或文件采集***出现故障,数据可能出现重复,而在某些要求计算结果精确的场景下,数据重复问题会直接影响流处理的结果错误,造成损失。
然而,目前的流处理中缺乏对上游数据的重复进行监控,若数据从上游***流向Flink引擎中发生异常导致数据重复,则会使得流处理的计算结果不可靠。
发明内容
基于此,有必要针对上述因数据重复导致流处理的计算结果不可靠的问题,提供一种能够解决数据重复问题的流计算的数据处理方法、装置、计算机设备和存储介质。
一种流计算的数据处理方法,所述方法应用于流处理引擎,所述方法包括:
采集消息队列的待处理数据,从待处理数据中提取关键值;
采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,其中,目标散列值用于指示待处理数据的唯一性;
将目标散列值映射到预先创建的位数组中对应的位,其中,位数组用于统计采集的待处理数据;
若位数组中对应的位不存在数据,则表示待处理数据为新增数据,根据业务***的数据处理请求对待处理数据进行处理;
向业务***返回对待处理数据进行处理后得到的目标数据。
在其中一个实施例中,所述方法还包括:若位数组中对应的位已存在数据,则表示待处理数据为重复数据,对待处理数据进行丢弃处理。
在其中一个实施例中,从待处理数据中提取关键值,包括:若待处理数据为结构化数据,则获取待处理数据中的消息主键和更新时间信息,得到与待处理数据对应的关键值;若待处理数据为非结构化数据且为日志类型,则获取待处理数据对应的日志内容,得到与待处理数据对应的关键值。
在其中一个实施例中,若待处理数据为结构化数据;采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,包括:对待处理数据中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第一散列值;对待处理数据中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第二散列值;获取第一散列值与第二散列值分别对应的绝对值的和,对和进行散列处理,得到目标散列值。
在其中一个实施例中,设定的第二固定参数包括多个参数值;所述对散列处理后的值拼接设定的第二固定参数并进行移位操作,包括:根据多个参数值对散列处理后的值进行第一拼接处理,获取按设定位数对第一拼接处理后的字符串进行第一左移位后得到的数据;根据多个参数值对第一左移位后得到的数据进行第二拼接处理,获取按设定位数对第二拼接处理后的字符串进行第二左移位后得到的数据;根据多个参数值对第二左移位后得到的数据进行第三拼接处理,获取按设定位数对第三拼接处理后的字符串进行第三左移位后得到的数据。
在其中一个实施例中,若待处理数据为非结构化数据且为日志类型;采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,包括:根据待处理数据对应的日志内容的字段对日志内容进行拼接;对拼接后的字符串进行散列处理,得到目标散列值。
在其中一个实施例中,将目标散列值映射到预先创建的位数组中对应的位,包括:根据目标散列值确定位数组中与目标散列值对应的位。
一种流计算的数据处理装置,所述装置包括:
数据采集模块,用于采集消息队列的待处理数据,从待处理数据中提取关键值;
散列处理模块,用于采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,其中,目标散列值用于指示待处理数据的唯一性;
映射模块,用于将目标散列值映射到预先创建的位数组中对应的位,其中,位数组用于统计采集的待处理数据。
数据处理模块,用于若位数组中对应的位不存在数据,则表示待处理数据为新增数据,根据业务***的数据处理请求对待处理数据进行处理;
目标数据返回模块,用于向业务***返回对待处理数据进行处理后得到的目标数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
上述流计算的数据处理方法、装置、计算机设备和存储介质,通过采集消息队列的待处理数据,从待处理数据中提取关键值,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,并将目标散列值映射到预先创建的位数组中对应的位,若位数组中对应的位不存在数据,则表示待处理数据为新增数据,从而根据业务***的数据处理请求对待处理数据进行处理,并向业务***返回对待处理数据进行处理后得到的目标数据,因只对新增数据进行处理,从而解决了因数据重复导致流处理的计算结果不可靠的问题。
附图说明
图1为一个实施例中流计算的数据处理方法的应用环境图;
图2为一个实施例中数据异常场景的示意图;
图3为另一个实施例中数据异常场景的示意图;
图4为另一个实施例中数据异常场景的示意图;
图5为一个实施例中流计算的数据处理方法的流程示意图;
图6为一个实施例中位数组的结构示意图;
图7为一个实施例中变化数据的示意图;
图8为一个实施例中日志内容的格式示意图;
图9为一个实施例中对关键值进行散列处理步骤的流程示意图;
图10为一个实施例中进行移位操作步骤的流程示意图;
图11为一个实施例中流计算的数据处理方法的流程示意图;
图12为一个实施例中state保存的场景示意图;
图13为一个实施例中将待处理数据映射到位数组的流程示意图;
图14为一个实施例中判断数据重复的处理流程示意图;
图15为一个实施例中流计算的数据处理装置的结构框图;
图16为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的流计算的数据处理方法,可以应用于如图1所示的应用环境中。其中,计算机设备102通过网络分别与上游***(包括产生数据的源数据***、CDC软件或日志采集软件以及消息队列等)104和业务***(包括不同层面API、类库等)106进行通信。其中,计算机设备102可以但不限于是各种个人计算机、笔记本电脑等设备,计算机设备102中安装有流处理引擎,具体地,流处理引擎包括Flink、Spark Streaming和strom中的任一种。
如图1所示,上游***104中的源数据***产生数据并写入消息队列,目前将数据写入消息队列的方式主要包括:一种是通过CDC软件实时监控源数据***的数据变化,推送到目标端,进而写入到消息队列;另一种是实时产生的日志文件,通过日志采集软件,写入到消息队列;还有一种是通过应用程序将源数据***的数据直接写入消息队列。流处理引擎消费消息队列数据,进行实时处理,并将处理结果通过交与业务***106进行存储与展示,以供前端页面实时查询结果。具体地,业务***106可以是HBase(分布式的、面向列的开源数据库)或Elasticsearch(分布式搜索与分析引擎)等。
由于造成数据重复的原因主要有如下方面:一方面是由于上游***中的数据接入软件如CDC软件发生故障或异常重启,如图2所示,使得存在于内存的用于记录消息读取位置的元数据(44123至44127的数据)未及时持久化到磁盘,导致记录点中记录的数据不同步,而软件重启后为保证数据不丢失,软件默认会从上一次保存在磁盘中的元数据位置(44123处)发送信息,而非最新的内存中的元数据位置(44127处)发送信息,从而导致44123至44127之间的数据重复。另一方面是由于分布式框架(如Kafka)的设计原因本身就存在数据重复的可能性,如图3所示,要求所有副本同步列表均同步成功,则数据发生成功,若每个partition数据的最大位置为LEO处,而消费最大位置为HW处,如Follower1和Follower2正在同步5、6、7位置的数据时leader挂掉导致5、6、7位置的数据发生失败,则需要重新选取leader,如图4所示,若Follower1为新的leader,则5、6、7位置的数据需要重新发送,但是,由于其已经同步了5、6位置的数据,从而造成5、6位置的数据重复。还有一方面是由于网络数据传输的不稳定性因素,可能会在传输过程中发生重传、重复现象,从而导致数据重复。
基于此,如图5所示,提供了一种流计算的数据处理方法,以该方法应用于图1中的流处理引擎为例进行说明,包括以下步骤:
步骤510,采集消息队列的待处理数据,从待处理数据中提取关键值。
其中,待处理数据是指流处理引擎从上游***的消息队列中采集的待进行处理的数据。关键值则是待处理数据中能够体现数据特征的字段,例如可以包括数据ID(Identitydocument,标识)、数据更新时间以及数据的日志内容等。具体地,通过采集待处理数据,并从待处理数据中提取关键值,以通过后续步骤构造用于指示待处理数据的唯一性的标识,以达到对数据进行去重的目的。
步骤520,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值。
其中,目标散列值用于指示待处理数据的唯一性。散列规则则是指示对关键值进行散列处理,且使得处理后得到的目标散列值具有唯一性的方法。由于在进行散列处理时,对于不同字符串进行散列处理后得到的Hash值(即目标散列值)可能相同,从而无法达到对数据进行去重的目的,因此,本实例通过采用设定的散 列规则对关键值进行散列处理,从而得到对应的具有唯一性的目标散列值,从而避免对不同字符串进行散列处理后得到的Hash值可能相同的情况。
步骤530,将目标散列值映射到预先创建的位数组中对应的位。
其中,位数组(Bit Array)用于统计采集的待处理数据,该位数组可以创建在计算机底层存储结构中,在极限压缩情况下,只需要“一位”(bit)记录待处理数据是否存在,如图6所示,其中,bit位是用于表示待处理数据的唯一性的标识,通过对应的存储位中记录“0”或“1”以表示待处理数据是否存在,从而能够在空间最小化、读写效率最大化的情况下解决数据重复的问题。在本实施例中,通过将目标散列值映射到预先创建的位数组中对应的位,从而可以通过该位中记录的信息而确定待处理数据是否重复,以实现对待处理数据去重的目的。
步骤540,若位数组中对应的位不存在数据,则根据业务***的数据处理请求对待处理数据进行处理。
其中,数据处理请求是业务***基于具体的业务场景而向流处理引擎提出的需求,如可以是业务***通过流处理引擎查询特定数据的请求。在本实施例中,为了确保流处理引擎的计算结果准确,流处理引擎首先应确保待处理数据的正确性,即对待处理数据进行去重。具体地,通过映射到位数组中对应的位,进而通过该位中记录的信息而确定待处理数据是否重复,若对应的位中记录的信息表示该待处理数据不存在,则可以确定该待处理数据为新增数据,而不是重复数据。只有在确定待处理数据不是重复数据的情况下,进而才根据业务***的数据处理请求对待处理数据进行处理,从而能够确保计算结果的准确性。
步骤550,向业务***返回对待处理数据进行处理后得到的目标数据。
其中,目标数据可以是根据数据处理请求对待处理数据进行处理后得到的处理结果。例如,若数据处理请求是查询特定数据的请求时,则目标数据是查询后得到的查询结果。具体地,流处理引擎在根据业务***的数据处理请求对待处理数据进行处理后,得到目标数据,并向对应的业务***返回该目标数据。
上述数据处理方法,通过采集待处理数据,从待处理数据中提取关键值,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,并将目标散列值映射到预先创建的位数组中对应的位,若位数组中对应的位不存在数据,则表示待处理数据为新增数据,从而根据业务***的数据处理请求对待处理数据进行处理,并向业务***返回对待处理数据进行处理后得到的目标数据,因只对新增数据进行处理,从而解决了因数据重复导致流处理的计算结果不可靠的问题。
在一个实施例中,对于某些场景,可以通过对采集的消息队列中待处理数据直接进行SHA(Secure Hash Algorithm,安全散列算法)或MD5(信息摘要算法,MD5 Message-Digest Algorithm)的方式进行处理,从而得到用于指示待处理数据的唯一性ID,此种方式与上述关键值提取、并散列处理后得到待处理数据的目标散列值的作用相类似,此处不再赘述。
在一个实施例中,上述方法还包括:在通过映射到位数组中对应的位中记录的信息而确定待处理数据是否重复时,若对应的位中记录的信息表示该待处理数据已存在,则可以确定该待处理数据为重复数据,从而可以对该待处理数据进行丢弃处理,以达到对数据进行去重的目的。
进一步地,若对应的位中记录的信息表示该待处理数据不存在,则还可以对位数组中对应的位的值(即该位中记录的信息)进行设置。具体地,对位数组中对应的位的值进行设置可以通过如下方式实现,例如,若预先规定位数组中对应的位记录“0”时表示数据不存在,对应的位记录“1”时表示数据已存在,则在映射到位数组中对应的位的值为“0”时,则表示当前采集的待处理数据不存在,即该待处理数据为新增数据,从而可以将对应的位的值修改为“1”,并存储该待处理数据。因此,若相同的待处理数据再次被采集到时,由于其映射到位数组中对应的位的值为“1”,则表示该待处理数据为重复数据,从而可以删除该条重复的数据,以达到对数据进行去重的目的。
在一个实施例中,从待处理数据中提取关键值可通过如下方式实现:
对于待处理数据为结构化数据的情况,则获取待处理数据中的消息主键和更新时间信息,从而得到与待处理数据对应的关键值。其中,消息主键可以是指数据ID。通常情况下,会认为结构化数据一定存在唯一主键(即数据ID),但是,由于上游***中的CDC软件等监控数据发生的变化,并将变化数据推送到消息队列,流处理引擎消费消息队列中产生的新数据,因此,唯一主键并不能作为去重的依据。一般而言,变化的数据通常有Insert(***)、Update(更新)以及Delete(删除)等操作产生的数据。以Insert和Update产生数据为例,如图7所示,数据到达流处理引擎的格式报文为:
Insert:{"database":"test","table":"emp","Before":{},"After":{"empno":"7808","empname":"JACK","upset_time":"2002-04-25 15:16:30"}};上述报文为:在“test”数据库中表名为“emp”的表中***一条数据ID为“7808”的数据,***数据内容包括企业名称“JACK”,操作时间“2002-04-25 15:16:30”;
Update:{"database":"test","table":"emp","Before":{"empno":"7808","empname":"JACK","upset_time":"2002-04-25 15:16:30"},"After":{"empno":"7808","empname":"JACKMA","upset_time":"2002-04-25 15:22:54"}};上述报文为:对“test”数据库中表名为“emp”的表中数据ID为“7808”的数据进行更新,更新前的数据内容包括企业名称“JACK”,***时间“2002-04-25 15:16:30”,更新后的数据内容包括企业名称“JACKMA”,操作时间“2002-04-25 15:22:54”。
由于流处理引擎需要处理如上***数据和更新数据,但是由于***数据和更新数据具有相同的数据ID,因此,数据ID并不能达到去重的目的,甚至会造成数据漏处理。基于此,本实施例通过提取待处理数据中的消息主键(即数据ID)和更新时间信息,并将两者拼接得到的信息作为与待处理数据对应的关键值,如empno+upset_time。
而对于待处理数据为非结构化数据且为日志类型的情况,则获取待处理数据对应的日志内容,从而得到与待处理数据对应的关键值。由于对于非结构化的日志类型数据,通常难以像结构化数据一样,能够从源数据中直接提取体现数据特征的字段,如消息主键和更新时间信息等。因此,可以考虑从待处理数据对应的日志内容中获得对应的关键值。具体地,当待处理数据为非结构化数据且为日志类型时,可以获取待处理数据对应的日志内容,举例来说,日志内容对应的格式可以是如图8所示的形式,包括序列id、日志时间、事件类型、源ip、目标ip以及协议等字段信息。因此,在本实施例中,为了充分体现数据特征,可以将待处理数据对应的日志内容中各字段进行拼接后得到的数据作为该待处理数据的关键值。可以理解的是,对于不同的非结构化数据,其日志内容可以不限于图8所示的形式。
在一个实施例中,对于待处理数据为结构化数据时,如图9所示,在步骤520中,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,具体可以包括如下步骤:
步骤521,对待处理数据中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第一散列值。
由于对于结构化数据而言,其对应的关键值包括消息主键和更新时间信息,如果直接对关键值进行散列处理,对于不同关键值进行散列处理后得到的Hash值(即目标散列值)可能相同,从而无法达到对数据进行去重的目的。基于此,本实施例通过对关键值中的各部分分别进行散列处理,并通过在散列处理时增加固定参数、进行移位操作等方式,以避免对不同字符串进行散列处理后得到的Hash值可能相同的情况。具体地,通过对待处理数据的关键值中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,从而得到与消息主键对应的第一散列值。其中,第一固定参数和第二固定参数都可以是预先设定的常量,其作用是为了使得得到的第一散列值更加发散。
步骤522,对待处理数据中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第二散列值。
同理,通过对待处理数据的关键值中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,从而得到与更新时间信息对应的第二散列值。其中,第三固定参数也是预先设定的常量,其可以与第一固定参数相同,也可以不同,其作用也是为了使得得到的第二散列值更加发散。
步骤523,获取第一散列值与第二散列值分别对应的绝对值的和,对和进行散列处理,得到目标散列值。
具体地,通过上述步骤得到关键值中消息主键对应的第一散列值和关键值中更新时间信息对应的第二散列值,进而计算第一散列值与第二散列值分别对应的绝对值的和,对得到的和再次进行散列处理,从而得到该关键值对应的目标散列值。
进一步地,如图10所示,上述设定的第二固定参数中可以包括多个参数值,则对散列处理后的值拼接设定的第二固定参数并进行移位操作,具体可以包括如下步骤:
步骤1010,根据多个参数值对散列处理后的值进行第一拼接处理,获取按设定位数对第一拼接处理后的字符串进行第一左移位后得到的数据。
步骤1020,根据多个参数值对第一左移位后得到的数据进行第二拼接处理,获取按设定位数对第二拼接处理后的字符串进行第二左移位后得到的数据。
步骤1030,根据多个参数值对第二左移位后得到的数据进行第三拼接处理,获取按设定位数对第三拼接处理后的字符串进行第三左移位后得到的数据。
其中,设定位数是预先设定的进行移位操作的位数,可以是5位、10位等,具体可以根据实际需要设定移位的位数。具体地,设定的第二固定参数中可以包括多个参数值,因此,在每次拼接处理时,拼接的参数值可以选择第二固定参数中不同的参数值。在本实施例中,为了方便说明每一步骤中的拼接处理以及移位操作,特通过第一拼接处理、第二拼接处理与第三拼接处理和第一左移位、第二左移位与第三左移位加以区分。
在一个实施例中,对于待处理数据为非结构化数据且为日志类型时,在步骤520中,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,包括;根据待处理数据对应的日志内容的字段对日志内容进行拼接;对拼接后的字符串进行散列处理,得到目标散列值。具体地,对拼接后的字符串进行散列处理可以是直接对拼接后的字符串进行散列处理,从而得到散列处理后的目标散列值。也可以是采用如图9所示的方法,在拼接的各字段后分别拼接固定参数后进行散列处理,并对散列处理后的值拼接固定参数后进行移位操作,从而得到各字段对应的散列值,然后对各字段分别对应的散列值的绝对值求和,以得到目标散列值。
在一个实施例中,将目标散列值映射到预先创建的位数组中对应的位,具体包括:根据目标散列值确定位数组中与该目标散列值对应的位。
由于位数组在极限压缩的情况下,可以将数据存在或不存在通过使用一个bit位来表示,因此,可以通过位数组中记录的信息来判断当前采集的待处理数据是否重复。在本实施例中,根据上述步骤得到的目标散列值确定位数组中与该目标散列值对应的位,即将目标散列值映射到位数组中对应的位,进而根据该位中记录的信息判断当前采集的待处理数据是否为重复数据。可以理解的是,流处理引擎在利用位数组统计采集的待处理数据时,采用同样的方式确定记录到达流处理引擎中每条待处理数据的位,即通过从待处理数据中提取关键值,采用与上述相同的散列规则对关键值进行散列处理,得到对应的目标散列值,进而根据目标散列值确定位数组中与目标散列值对应的位,从而将位数组中与目标散列值对应的位用来记录该待处理数据是否存在的信息。因此,在采集到待处理数据时,可以通过上述一系列的处理映射到位数组中对应的位,进而可以根据该位中记录的信息判断当前采集的待处理数据是否为重复数据,以达到对数据进行去重的目的。
进一步地,由于流处理引擎对应的流式程序是不断运行的程序,如果数据一直增长,而生成的位数组大小是固定的,因此总会存在位数组被全部铺满的情况。从而在实际开发过程中,需要评估每天的数据量,位数组能够容纳的最大记录数,以进行定期清空位数组。例如:在生产环境中,若明确知道3个月之后数据不会存在重复问题,那么在创建位数组时,应考虑其大小最少能容纳三个月产生数据的记录数。举例来说,如预估三个月会产生1亿条数据,那么在创建位数组时,其大小至少需要12M,因此,此种情况下应每三个月对位数组记录的信息进行一次清除,即将位数组中存储时间超过3个月的位中记录的信息由1转换为0,以此达到对位数组数据的清除效果,从而能够有效实现数据去重的目的。具体可以通过对每条数据关联时间标记,并在定期清除数据时参考时间标记进行清除。例如在Flink中可通过注册定时器和状态编程的方式实现,首先定义标志位状态(默认为false),该标志位用于标记是否清除对应位中数据的状态。定时器则定时触发(如每三个月触发一次),定时器触发后将对应标志位状态进行修改,如将状态为false的标志位修改为true。通过定时注册定时器,并定时触发机制实现定期清除N(如三十)天数据,从而达到有效去重的目的。
在一个实施例中,如图11所示,以下通过流处理引擎为Flink、待处理数据为结构化数据为例进一步说明本申请的方法,具体可以包括如下步骤:
步骤1101,在Flink state中创建位数组。
位数组用于统计采集的待处理数据,本实施例以当前Bit位存在数据记录为1(true),当时Bit位上不存在数据记录为0(false)为例进行说明。对于传统存储方式,若有1亿条数据,每条数据的唯一id大小为30B,则需要存储空间约2.8G,而如果使用位数组则仅仅需要约12M的存储空间,两者的存储空间比约为239:1,因此,使用位数组方式在存储空间上能够极大压缩。且由于单纯的JVM(Java Virtual Machine,Java虚拟机)内存无法保证存储的高可靠性,因此,通过借助Flink state处理。Flink框架state首先存储在TaskManager内存中,不仅能保证高效的读写,同时通过特定的线程对状态进行维护,也就是状态后端负责定时对状态进行持久化到磁盘,从而保证了状态的容错与恢复,且能够实现在空间最小化,读写效率最大化。
又由于在Flink中状态可以包括operator state(操作员状态)和keyed state(键控状态),因此,在做重复处理时可以利用operator。而初始化state装载类型时定义为BitSet,也就是利用Java BitSet数据结构实现。且Flink能够提供很好的State查询以及更新操作,在每条数据流入Flink框架时,需要对state中的BitSet进行更新,若数据根据散列原则得到的BitSet数组中对应位为0,则更新,即对数据进行正常处理,若得到的BitSet数组中对应位为1,则为重复数据。
如图12所示,由于state都是存在于TaskManager(任务管理器,即图中的TM)内存中,由JobManager(作业管理器,即图中的JM)所管理,为了容错、恢复,须将TM内存中的state通过Snapshot(快照)方式保存至文件***中,文件***可以使用HDFS(HadoopDistributed File System,分布式文件***)实现,并通过检查点(checkpoint)机制实现。
步骤1102,采集待处理数据,映射到位数组中对应的位。
具体地映射过程包括:通过从待处理数据中提取关键值,采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,进而根据目标散列值确定位数组中与目标散列值对应的位,以映射到位数组中对应的位,从而可以通过该位记录待处理数据的信息,以实现对待处理数据进行统计。
具体如图13所示,若从待处理数据中提取的关键值字段为empno+upset_time,其对应的关键值为7878_2002-04-25 15:16:30。则分别对empno和upset_time进行加常量,后续步骤会进行hash操作,由于不同字符串通过hash函数处理之后可能会得到相同值,所以需要对原始关键值进行加固定常量,目的在于尽量散列hash值,如对empno为7878加常量后得到字符串7878_6gs2,对upset_time为2002-04-25 15:16:30加常量后得到字符串2002-04-25 15:16:30_6$fsfd。分别对加常量后的empno字符串与upset_time字符串进行hash处理,对hash后的值分别进行三次左移操作,且每次左移时都需要加上预先设定的固定常量SALT,目的同上,尽量散列hash值。例如,对字符串2002-04-25 15:16:30_6$fsfd进行hash处理后得到hash Code,若预先设定的三次左移操作时的固定常量SALT1=651L,SALT2=9832L,SALT3=2131L,且每次左移5位,则有(hash Code+ SALT1)〈〈5,得到s1,(s1+ SALT2)〈〈5,得到s2,(s2+ SALT3)〈〈5,得到s3,即得到47451110550112-53484984587680。对empno进行同样处理,得到47451110550112。进而对两者的绝对值进行求和,并对得到的和再次进行散列处理,从而得到目标散列值,如图中所示的“1693037820”。将得到的目标散列值映射到位数组中对应的位,即得到的目标散列值为位数组中对应的下标。由于hash函数的范围是Int类型范围,而位数组的最大长度也是Int类型范围,因此,通过将两次hash的值相加可能超出Int类型范围,导致位数组数据越界,基于此,本实施例通过对两次hash的值相加后再次进行hash处理,从而解决数据越界的问题。
步骤1103,获取位中对应的值。
若该值为0,则执行步骤1104,更新对应位的值为1,并对待处理数据进行正常处理;若该值为1,则表示为重复数据,从而执行步骤1105,丢弃待处理数据。
步骤1104,更新对应位的值为1,并对待处理数据进行正常处理。
步骤1105,丢弃待处理数据。
具体如图14所示,在时间t1获取到数据,通过上述处理得到该数据映射到位数组中对应位的值,若为0,表示此前没有相同数据,即该数据为新数据,从而将该位对应的值设置为1。若在t2时刻获取到数据,如果映射到位数组中对应位的值为1,则表示存在相同的数据,因此,可以判断t2时刻获取的数据为重复数据,从而将t2时刻获取的数据删除,以此类推,采用同样的方法对t3时刻获取到的数据进行判断,从而达到对数据去重的目的。并在流式框架中直接过滤掉重复数据,从而不会影响处理结果,以提高处理结果的可靠性。
应该理解的是,虽然图1-14的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-14中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图15所示,提供了一种流计算的数据处理装置,包括:数据采集模块1501、散列处理模块1502、映射模块1503、数据处理模块1504和目标数据返回模块1505,其中:
数据采集模块1501,用于采集消息队列的待处理数据,从待处理数据中提取关键值;
散列处理模块1502,用于采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,其中,目标散列值用于指示待处理数据的唯一性;
映射模块1503,用于将目标散列值映射到预先创建的位数组中对应的位,其中,位数组用于统计采集的待处理数据;
数据处理模块1504,用于若位数组中对应的位不存在数据,则表示待处理数据为新增数据,根据业务***的数据处理请求对待处理数据进行处理;
目标数据返回模块1505,用于向业务***返回对待处理数据进行处理后得到的目标数据。
在一个实施例中,数据处理模块1504还用于:若位数组中对应的位已存在数据,则表示待处理数据为重复数据,对待处理数据进行丢弃处理。
在一个实施例中,数据采集模块1501具体用于:若待处理数据为结构化数据,则获取待处理数据中的消息主键和更新时间信息,得到与待处理数据对应的关键值;若待处理数据为非结构化数据且为日志类型,则获取待处理数据对应的日志内容,得到与待处理数据对应的关键值。
在一个实施例中,若待处理数据为结构化数据,则散列处理模块1502具体用于:对待处理数据中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第一散列值;对待处理数据中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第二散列值;获取第一散列值与第二散列值分别对应的绝对值的和,对和进行散列处理,得到目标散列值。
在一个实施例中,散列处理模块1502具体还用于:根据多个参数值对散列处理后的值进行第一拼接处理,获取按设定位数对第一拼接处理后的字符串进行第一左移位后得到的数据;根据多个参数值对第一左移位后得到的数据进行第二拼接处理,获取按设定位数对第二拼接处理后的字符串进行第二左移位后得到的数据;根据多个参数值对第二左移位后得到的数据进行第三拼接处理,获取按设定位数对第三拼接处理后的字符串进行第三左移位后得到的数据。
在一个实施例中,若待处理数据为非结构化数据且为日志类型,则散列处理模块1502具体用于:根据待处理数据对应的日志内容的字段对日志内容进行拼接;对拼接后的字符串进行散列处理,得到目标散列值。
在一个实施例中,映射模块1503具体用于:根据目标散列值确定位数组中与目标散列值对应的位。
关于流计算的数据处理装置的具体限定可以参见上文中对于流计算的数据处理方法的限定,在此不再赘述。上述流计算的数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,如图16所示,该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储待处理数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种流计算的数据处理方法。
本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体地计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
采集消息队列的待处理数据,从待处理数据中提取关键值;
采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,其中,目标散列值用于指示待处理数据的唯一性;
将目标散列值映射到预先创建的位数组中对应的位,其中,位数组用于统计采集的待处理数据;
若位数组中对应的位不存在数据,则表示待处理数据为新增数据,根据业务***的数据处理请求对待处理数据进行处理;
向业务***返回对待处理数据进行处理后得到的目标数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若位数组中对应的位已存在数据,则表示待处理数据为重复数据,对待处理数据进行丢弃处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若待处理数据为结构化数据,则获取待处理数据中的消息主键和更新时间信息,得到与待处理数据对应的关键值;若待处理数据为非结构化数据且为日志类型,则获取待处理数据对应的日志内容,得到与待处理数据对应的关键值。
在一个实施例中,若待处理数据为结构化数据;处理器执行计算机程序时还实现以下步骤:对待处理数据中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第一散列值;对待处理数据中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第二散列值;获取第一散列值与第二散列值分别对应的绝对值的和,对和进行散列处理,得到目标散列值。
在一个实施例中,设定的第二固定参数包括多个参数值;处理器执行计算机程序时还实现以下步骤:根据多个参数值对散列处理后的值进行第一拼接处理,获取按设定位数对第一拼接处理后的字符串进行第一左移位后得到的数据;根据多个参数值对第一左移位后得到的数据进行第二拼接处理,获取按设定位数对第二拼接处理后的字符串进行第二左移位后得到的数据;根据多个参数值对第二左移位后得到的数据进行第三拼接处理,获取按设定位数对第三拼接处理后的字符串进行第三左移位后得到的数据。
在一个实施例中,若待处理数据为非结构化数据且为日志类型;处理器执行计算机程序时还实现以下步骤:根据待处理数据对应的日志内容的字段对日志内容进行拼接;对拼接后的字符串进行散列处理,得到目标散列值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据目标散列值确定位数组中与目标散列值对应的位。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
采集消息队列的待处理数据,从待处理数据中提取关键值;
采用设定的散列规则对关键值进行散列处理,得到对应的目标散列值,其中,目标散列值用于指示待处理数据的唯一性;
将目标散列值映射到预先创建的位数组中对应的位,其中,位数组用于统计采集的待处理数据;
若位数组中对应的位不存在数据,则表示待处理数据为新增数据,根据业务***的数据处理请求对待处理数据进行处理;
向业务***返回对待处理数据进行处理后得到的目标数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若位数组中对应的位已存在数据,则表示待处理数据为重复数据,对待处理数据进行丢弃处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若待处理数据为结构化数据,则获取待处理数据中的消息主键和更新时间信息,得到与待处理数据对应的关键值;若待处理数据为非结构化数据且为日志类型,则获取待处理数据对应的日志内容,得到与待处理数据对应的关键值。
在一个实施例中,若待处理数据为结构化数据;计算机程序被处理器执行时还实现以下步骤:对待处理数据中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第一散列值;对待处理数据中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第二散列值;获取第一散列值与第二散列值分别对应的绝对值的和,对和进行散列处理,得到目标散列值。
在一个实施例中,设定的第二固定参数包括多个参数值;计算机程序被处理器执行时还实现以下步骤:根据多个参数值对散列处理后的值进行第一拼接处理,获取按设定位数对第一拼接处理后的字符串进行第一左移位后得到的数据;根据多个参数值对第一左移位后得到的数据进行第二拼接处理,获取按设定位数对第二拼接处理后的字符串进行第二左移位后得到的数据;根据多个参数值对第二左移位后得到的数据进行第三拼接处理,获取按设定位数对第三拼接处理后的字符串进行第三左移位后得到的数据。
在一个实施例中,若待处理数据为非结构化数据且为日志类型;计算机程序被处理器执行时还实现以下步骤:根据待处理数据对应的日志内容的字段对日志内容进行拼接;对拼接后的字符串进行散列处理,得到目标散列值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据目标散列值确定位数组中与目标散列值对应的位。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种流计算的数据处理方法,其特征在于,所述方法应用于流处理引擎,所述方法包括:
采集消息队列的待处理数据,从所述待处理数据中提取关键值;
采用设定的散列规则对所述关键值进行散列处理,得到对应的目标散列值,所述目标散列值用于指示所述待处理数据的唯一性;
将所述目标散列值映射到预先创建的位数组中对应的位,所述位数组用于统计采集的待处理数据;
若所述位数组中对应的位不存在数据,则表示所述待处理数据为新增数据,根据业务***的数据处理请求对所述待处理数据进行处理;
向所述业务***返回对所述待处理数据进行处理后得到的目标数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述位数组中对应的位已存在数据,则表示所述待处理数据为重复数据,对所述待处理数据进行丢弃处理。
3.根据权利要求1所述的方法,其特征在于,所述从所述待处理数据中提取关键值,包括:
若所述待处理数据为结构化数据,则获取所述待处理数据中的消息主键和更新时间信息,得到与所述待处理数据对应的关键值;
若所述待处理数据为非结构化数据且为日志类型,则获取所述待处理数据对应的日志内容,得到与所述待处理数据对应的关键值。
4.根据权利要求3所述的方法,其特征在于,若所述待处理数据为结构化数据;所述采用设定的散列规则对所述关键值进行散列处理,得到对应的目标散列值,包括:
对所述待处理数据中的消息主键拼接设定的第一固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第一散列值;
对所述待处理数据中的更新时间信息拼接设定的第三固定参数后进行散列处理,对散列处理后的值拼接设定的第二固定参数并进行移位操作,得到第二散列值;
获取所述第一散列值与所述第二散列值分别对应的绝对值的和,对所述和进行散列处理,得到所述目标散列值。
5.根据权利要求4所述的方法,其特征在于,所述设定的第二固定参数包括多个参数值;所述对散列处理后的值拼接设定的第二固定参数并进行移位操作,包括:
根据所述多个参数值对散列处理后的值进行第一拼接处理,获取按设定位数对第一拼接处理后的字符串进行第一左移位后得到的数据;
根据所述多个参数值对第一左移位后得到的数据进行第二拼接处理,获取按设定位数对第二拼接处理后的字符串进行第二左移位后得到的数据;
根据所述多个参数值对第二左移位后得到的数据进行第三拼接处理,获取按设定位数对第三拼接处理后的字符串进行第三左移位后得到的数据。
6.根据权利要求3所述的方法,其特征在于,若所述待处理数据为非结构化数据且为日志类型;所述采用设定的散列规则对所述关键值进行散列处理,得到对应的目标散列值,包括:
根据所述待处理数据对应的日志内容的字段对所述日志内容进行拼接;
对拼接后的字符串进行散列处理,得到所述目标散列值。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述将所述目标散列值映射到预先创建的位数组中对应的位,包括:
根据所述目标散列值确定所述位数组中与所述目标散列值对应的位。
8.一种流计算的数据处理装置,其特征在于,所述装置包括:
数据采集模块,用于采集消息队列的待处理数据,从所述待处理数据中提取关键值;
散列处理模块,用于采用设定的散列规则对所述关键值进行散列处理,得到对应的目标散列值,所述目标散列值用于指示所述待处理数据的唯一性;
映射模块,用于将所述目标散列值映射到预先创建的位数组中对应的位,所述位数组用于统计采集的待处理数据;
数据处理模块,用于若所述位数组中对应的位不存在数据,则表示所述待处理数据为新增数据,根据业务***的数据处理请求对所述待处理数据进行处理;
目标数据返回模块,用于向所述业务***返回对所述待处理数据进行处理后得到的目标数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011243661.9A CN112069162B (zh) | 2020-11-10 | 2020-11-10 | 流计算的数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011243661.9A CN112069162B (zh) | 2020-11-10 | 2020-11-10 | 流计算的数据处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069162A true CN112069162A (zh) | 2020-12-11 |
CN112069162B CN112069162B (zh) | 2021-02-26 |
Family
ID=73655397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011243661.9A Active CN112069162B (zh) | 2020-11-10 | 2020-11-10 | 流计算的数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069162B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518365A (zh) * | 2021-04-29 | 2021-10-19 | 北京红山信息科技研究院有限公司 | 一种数据关联方法、装置、服务器及存储介质 |
CN117009409A (zh) * | 2023-06-05 | 2023-11-07 | 成都安易迅科技有限公司 | 大数据实时排重处理方法和装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955857A (zh) * | 2019-10-18 | 2020-04-03 | 苏宁云计算有限公司 | 一种用于高并发环境的业务处理方法及装置 |
CN111209310A (zh) * | 2020-04-23 | 2020-05-29 | 太平金融科技服务(上海)有限公司 | 基于流计算的业务数据处理方法、装置和计算机设备 |
CN111400308A (zh) * | 2020-02-21 | 2020-07-10 | 中国平安财产保险股份有限公司 | 缓存数据的处理方法、电子装置及可读存储介质 |
CN111414395A (zh) * | 2020-03-27 | 2020-07-14 | 中国平安财产保险股份有限公司 | 数据处理方法、***和计算机设备 |
-
2020
- 2020-11-10 CN CN202011243661.9A patent/CN112069162B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955857A (zh) * | 2019-10-18 | 2020-04-03 | 苏宁云计算有限公司 | 一种用于高并发环境的业务处理方法及装置 |
CN111400308A (zh) * | 2020-02-21 | 2020-07-10 | 中国平安财产保险股份有限公司 | 缓存数据的处理方法、电子装置及可读存储介质 |
CN111414395A (zh) * | 2020-03-27 | 2020-07-14 | 中国平安财产保险股份有限公司 | 数据处理方法、***和计算机设备 |
CN111209310A (zh) * | 2020-04-23 | 2020-05-29 | 太平金融科技服务(上海)有限公司 | 基于流计算的业务数据处理方法、装置和计算机设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518365A (zh) * | 2021-04-29 | 2021-10-19 | 北京红山信息科技研究院有限公司 | 一种数据关联方法、装置、服务器及存储介质 |
CN113518365B (zh) * | 2021-04-29 | 2023-11-17 | 北京红山信息科技研究院有限公司 | 一种数据关联方法、装置、服务器及存储介质 |
CN117009409A (zh) * | 2023-06-05 | 2023-11-07 | 成都安易迅科技有限公司 | 大数据实时排重处理方法和装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112069162B (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983868B2 (en) | Epoch based snapshot summary | |
US7856437B2 (en) | Storing nodes representing respective chunks of files in a data store | |
CN108255647B (zh) | 一种samba服务器集群下的高速数据备份方法 | |
US10949405B2 (en) | Data deduplication device, data deduplication method, and data deduplication program | |
US7366859B2 (en) | Fast incremental backup method and system | |
US9110839B2 (en) | Storage system for storing target data and address data | |
US7680998B1 (en) | Journaled data backup during server quiescence or unavailability | |
US9223679B1 (en) | Lightweight, non-intrusive, and flexible apparatus to obtain system and process state | |
US20110131184A1 (en) | Focused backup scanning | |
CN111881011A (zh) | 日志管理方法、平台、服务器及存储介质 | |
CN112069162B (zh) | 流计算的数据处理方法、装置、计算机设备和存储介质 | |
WO2017020576A1 (zh) | 一种键值存储***中文件压实的方法和装置 | |
US11544150B2 (en) | Method of detecting source change for file level incremental backup | |
JP2009048377A (ja) | ファイル差分管理装置、ファイル差分管理方法、及びファイル差分管理プログラム | |
Strzelczak et al. | Concurrent Deletion in a Distributed {Content-Addressable} Storage System with Global Deduplication | |
CN108271420B (zh) | 管理文件的方法、文件***和服务器*** | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
Wei et al. | Detecting duplicates over sliding windows with ram-efficient detached counting bloom filter arrays | |
WO2016117007A1 (ja) | データベースシステム及びデータベース管理方法 | |
US11620270B2 (en) | Representing and managing sampled data in storage systems | |
CN111966635A (zh) | 一种分布式存储文件***提升文件探知速度的方法、装置 | |
US20170316024A1 (en) | Extended attribute storage | |
US11429587B1 (en) | Multiple duration deduplication entries | |
JP2009282563A (ja) | データ保存システム、プログラム及び方法、並びに監視装置 | |
CN116932779B (zh) | 知识图谱的数据处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |