CN113377752A - 数据的清洗方法、装置、系统及计算机可读存储介质 - Google Patents
数据的清洗方法、装置、系统及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113377752A CN113377752A CN202110629498.8A CN202110629498A CN113377752A CN 113377752 A CN113377752 A CN 113377752A CN 202110629498 A CN202110629498 A CN 202110629498A CN 113377752 A CN113377752 A CN 113377752A
- Authority
- CN
- China
- Prior art keywords
- data
- cleaning
- script
- executed
- determining
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种数据的清洗方法、装置、系统及计算机可读存储介质,该方法包括:接收到终端设备发送的原始事件数据后,确定原始事件数据有效性;若确定原始事件数据有效,则基于原始事件数据生成对应的数据清洗请求;根据数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于待执行清洗脚本对原始事件数据进行数据清洗。本申请通过待执行清洗脚本对原始事件数据进行数据清洗,即数据清洗的过程中,在需要新增或者修改数据清洗业务逻辑时,用户可以在待执行清洗脚本中新增或者修改对应的数据清洗函数,而不用新增或者修改整个模块,提高了数据清洗的可配置性。
Description
技术领域
本申请涉及物联网领域,尤其涉及一种数据的清洗方法、装置、系统及计算机可读存储介质。
背景技术
目前在智慧城市项目建设中,连接平台负责接入和解析来自感知设备上报的事件数据,如人脸、人体、机动车、非机动车、门禁、物联、告警等事件数据,上述的事件数据称之为“全量数据”。全量数据一般包含结构化信息,比如设备编号、设备名称、遥测数据、事件发生时间等,也包含一些非结构化信息,如人脸事件中的人脸图片数据。
目前连接平台需要对事件数据进行数据清洗时,具体过程如下:连接平台首先解析原始协议数据并转换成JSON格式的原始事件数据,判断原始事件数据的有效性,根据预设的清洗函数对原始事件数据进行二次处理,输出二次处理结果。其中,数据清洗的关键步骤在于清洗函数,清洗函数一般都是通过编程内置在数据清洗服务端的二进制代码中,从而使得数据清洗的业务逻辑可配置性不好,如若要新增设备数据的类型,或者修改业务清洗的逻辑,就需要修改二进制代码并构建数据清洗服务端的二进制代码模块。
发明内容
本申请的主要目的在于提供一种数据的清洗方法、装置、系统及计算机可读存储介质,旨在提高数据清洗的可配置性。
为实现上述目的,本申请提供一种数据的清洗方法,所述数据的清洗方法包括以下步骤:
接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性;
若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求;
根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
可选地,所述若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求的步骤之后,还包括:
根据所述参数信息中的设备标识信息,确定所述数据清洗请求对应的消息队列分区;
将所述数据清洗请求插入到所述消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次执行所述消息队列分区中的数据清洗请求。
可选地,所述基于所述待执行清洗脚本对所述原始事件数据进行数据清洗的步骤包括:
创建所述待执行清洗脚本的上下文运行对象,并将所述原始事件数据传入至所述上下文运行对象中;
通过超时参数以及传入所述原始事件数据后的上下文运行对象,异步执行所述待执行清洗脚本,对所述原始事件数据进行数据清洗。
可选地,所述根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本的步骤包括:
确定所述参数信息中的脚本标识信息,并根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本;
若在所述脚本缓存库中查询到不存在所述编译脚本,则根据所述参数信息中的脚本内容信息确定对应的数据清洗函数代码;
编译所述数据清洗函数代码,得到对应的目标编译脚本,并将所述目标编译脚本确定为所述待执行清洗脚本。
可选地,所述根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本的步骤之后,还包括:
若在所述脚本缓存库中查询到存在对应的编译脚本,则将编译脚本确定为所述待执行清洗脚本。
可选地,所述根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于所述待执行清洗脚本对所述原始事件数据进行数据清洗的步骤之后:
确定所述待执行清洗脚本在执行过程中是否返回异常提示信息;
若确定所述待执行清洗脚本在执行过程中没有返回所述异常提示信息,则确定所述待执行清洗脚本执行后的数据清洗结果,并将所述数据清洗结果存储至对应的消息队列分区。
可选地,所述待执行清洗脚本为JavaScript清洗脚本。
此外,为实现上述目的,本申请还提供一种数据的清洗装置,所述数据的清洗装置包括:
确定模块,用于接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性;
生成模块,用于若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求;
所述确定模块还用于根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本;
清洗模块,用于基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
此外,为实现上述目的,本申请还提供一种数据清洗系统,所述数据清洗系统包括存储器、处理器和存储在所述存储器上并在所述处理器上运行的数据清洗程序,所述数据清洗程序被所述处理器完成时实现如上所述的数据的清洗方法的步骤。
此外,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据清洗程序,所述数据清洗程序被处理器完成时实现如上所述的数据的清洗方法的步骤。
此外,为实现上述目的,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述包括计算机程序被所述处理器执行时实现如上所述的数据的清洗方法的步骤。
本申请提供了一种数据的清洗方法、装置、系统及计算机可读存储介质,接收到终端设备发送的原始事件数据后,确定原始事件数据有效性;若确定原始事件数据有效,则基于原始事件数据生成对应的数据清洗请求;根据数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于待执行清洗脚本对原始事件数据进行数据清洗。由此可知,本申请通过待执行清洗脚本对原始事件数据进行数据清洗,即数据清洗的过程中,在需要新增或者修改数据清洗业务逻辑时,用户可以在待执行清洗脚本中新增或者修改对应的数据清洗函数,而不用新增或者修改整个模块,从而提高了数据清洗的可配置性。
附图说明
图1是本申请实施例方案涉及的硬件运行环境的系统结构示意图;
图2是本申请数据的清洗方法第一实施例的流程示意图;
图3是本申请数据的清洗方法另一实施例的流程示意图;
图4是本申请数据的清洗方法数据清洗服务端、脚本执行服务端和Kafka服务端通信连接示意图;
图5是本申请数据的清洗方法消息队列分区的示意图;
图6是本申请数据的清洗方法步骤S30的细化流程示意图;
图7是本申请数据的清洗方法另一实施例的流程示意图;
图8是本申请数据的清洗装置较佳功能模块示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例的主要解决方案是:接收到终端设备发送的原始事件数据后,确定原始事件数据有效性;若确定原始事件数据有效,则基于原始事件数据生成对应的数据清洗请求;根据数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于待执行清洗脚本对原始事件数据进行数据清洗。由此可知,本申请通过待执行清洗脚本对原始事件数据进行数据清洗,即数据清洗的过程中,在需要新增或者修改数据清洗业务逻辑时,用户可以在待执行清洗脚本中新增或者修改对应的数据清洗函数,而不用新增或者修改整个模块,从而提高了数据清洗的可配置性。
具体地,参照图1,图1为本申请实施例方案涉及的硬件运行环境的系统结构示意图。
如图1所示,系统可以为具有数据处理的终端服务器,该系统可以包括:处理器1001,例如CPU(CentralProcessingUnit,中央处理器),存储器1005,用户接口1003,网络接口1004,通信总线1002。通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(board),用户接口1003可选的还可以包括标准的有线接口(如USB(UniversalSerialBus,通用串行总线)接口)、无线接口(如蓝牙接口)。网络接口1004可以包括标准的有线接口、无线接口(如WiFi(Wireless-Fidelity)接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatileMemory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。可选地,系统还可以包括RF(RadioFrequency,射频)电路,传感器、WiFi模块等。
本领域技术人员可以理解,图1中示出的系统结构并不构成对系统的限定,可以包括比图示更多或更少的部件,或组合某些部件,或不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据清洗程序。其中,操作系统是管理和控制系统硬件和软件资源的程序,支持数据清洗程序以及其它软件或程序的运行。
在图1所示的系统中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于终端设备,以供用户终端向系统发送原始事件数据;其中,处理器1001可以用于调用存储器1005中存储的数据清洗程序,并执行如下操作:
接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性;
若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求;
根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
进一步地,处理器1001可以调用存储器1005中存储的数据清洗程序,还执行以下操作:
根据所述参数信息中的设备标识信息,确定所述数据清洗请求对应的消息队列分区;
将所述数据清洗请求插入到所述消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次执行所述消息队列分区中的数据清洗请求。
进一步地,处理器1001可以调用存储器1005中存储的数据清洗程序,还执行以下操作:
创建所述待执行清洗脚本的上下文运行对象,并将所述原始事件数据传入至所述上下文运行对象中;
通过超时参数以及传入所述原始事件数据后的上下文运行对象,异步执行所述待执行清洗脚本,对所述原始事件数据进行数据清洗。
进一步地,处理器1001可以调用存储器1005中存储的数据清洗程序,还执行以下操作:
确定所述参数信息中的脚本标识信息,并根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本;
若在所述脚本缓存库中查询到不存在所述编译脚本,则根据所述参数信息中的脚本内容信息确定对应的数据清洗函数代码;
编译所述数据清洗函数代码,得到对应的目标编译脚本,并将所述目标编译脚本确定为所述待执行清洗脚本。
进一步地,处理器1001可以调用存储器1005中存储的数据清洗程序,还执行以下操作:
若在所述脚本缓存库中查询到存在对应的编译脚本,则将编译脚本确定为所述待执行清洗脚本。
进一步地,处理器1001可以调用存储器1005中存储的数据清洗程序,还执行以下操作:
确定所述待执行清洗脚本在执行过程中是否返回异常提示信息;
若确定所述待执行清洗脚本在执行过程中没有返回所述异常提示信息,则确定所述待执行清洗脚本执行后的数据清洗结果,并将所述数据清洗结果存储至对应的消息队列分区。
本申请提供一种基于数据的清洗方法,参照图2,图2为本申请基于数据的清洗方法第一实施例的流程示意图。
本申请实施例提供了基于数据的清洗方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些数据下,可以以不同于此处的顺序完成所示出或描述的步骤。
本申请本实施例方法的执行主体以数据清洗系统作为执行主体进行举例,基于数据的清洗方法包括:
步骤S10,接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性。
需要说明的是,数据清洗系统中包括数据清洗服务端和脚本执行服务端,其中,数据清洗服务端主要负责接收终端设备发送的原始事件数据,以及将根据原始事件数据生成的数据清洗请求发送至脚本执行服务端。脚本执行服务端主要负责接收数据清洗服务端发送过来的数据清洗请求,根据数据清洗请求中的参数信息执行对应的清洗脚本对原始事件数据进行数据信息,并将数据清洗的结果返回至数据清洗服务端。
因此,数据清洗系统中的数据清洗服务端接收到终端设备发送的原始事件数据后,数据清洗服务端首先需要判断原始事件数据的有效性,有效性包括有效和无效,具体如下:数据清洗服务端确定原始事件数据的数据类型,然后判断原始事件数据的数据格式与数据类型是否一致,若确定数据格式与数据类型一致,则确定原始事件数据有效。若确定数据格式与数据类型不一致,则确定原始事件数据无效。在本实施例中,比如,原始事件数据为温度数据,因此数据类型为温度类型,若数据格式为25℃或25K(开尔文),则确定原始事件数据是有效的。
步骤S20,若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求。
数据清洗系统中的数据清洗服务端若确定原始事件数据有效,则根据原始事件数据的具体内容和关联信息生成对应的数据清洗请求。其中,数据清洗请求的格式为JSON(JavaScriptObjectNotation,JS对象简谱)格式,因此,数据清洗请求可表示为{requestId:String,type:String,requestBody:String},requestId和type都是原始事件数据的关联信息,requestBody是原始事件数据的具体内容。进一步需要说明的是,requestId为请求标识信息,表示数据清洗请求的唯一标识,也可以理解为数据清洗请求的ID(IdentityDocument,唯一编码),requestId采用的雪花编码,目的是为了保证其唯一性和时序性。type表示数据清洗请求的请求类型,请求类型是由原始事件数据的数据类型决定的,在本实施例中,比如,原始事件数据的数据类型为人脸数据类型,请求类型为人脸数据类型。具体内容requestBody可表示为{scriptId:string,args:object,scriptBody:string,timeout:number},其中,scriptId表示脚本标识信息,表示指定所要调用的清洗脚本,可以理解为所要调用的清洗脚本的ID。args表示原始事件数据。scriptBody为脚本内容信息,表示脚本的具体内容,也即数据清洗函数代码。timeout表示执行清洗脚本的最大时长(单位:毫秒ms),number是一个具体的数字,数据清洗函数执行如果超时,则会返回超时错误信息。如number为3,也即执行清洗脚本的最大时长为3ms。因此,根据原始事件数据生成的数据清洗请求可最终表示为{requestId:String,type:String,scriptId:string,args:object,scriptBody:string,timeout:number}。requestId、type、scriptId、args、scriptBody和timeout都是数据清洗请求中的参数信息。数据清洗系统中的数据清洗服务端若确定原始事件数据无效,则发送对应的提示信息提示终端设备重新发送原始事件数据。
步骤S30,根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
需要说明的是,所谓的数据清洗就是根据业务需求对原始事件数据中的数据内容进行二次处理,比如,将华氏温度读数转换成摄氏温度读数,将电表读数转换成用电量等,清洗后的原始事件数据将作为标准的设备事件数据通过接口提供给上层业务平台使用。
数据清洗系统的数据清洗服务端在生成数据清洗请求后,将数据清洗请求发送至数据清洗系统的脚本执行服务端。脚本执行服务端是基于Node.JS平台采用JavaScript语言开发的微服务器,Node.JS是一个基于谷歌V8引擎的JavaScript运行时,有着优秀的性能和丰富的库资源。Node.JS提供的VM模块,可以实现在V8运行时上下文中编译和运行用户提供的JavaScript脚本。脚本执行服务端接收到数据清洗服务端发送的数据清洗请求后,在执行数据清洗请求指定的清洗脚本时,首先根据scriptId在缓存库中查找是否存在与该scriptId相同的已经编译好的清洗脚本script,若在缓存库中查找到了与该scriptId相同的已经编译好的清洗脚本script,说明该scriptId指定的清洗脚本之前已经被执行过了,则将该已经编译好的脚本script确定为待执行清洗脚本,待执行清洗脚本是JavaScript格式的清洗脚本。若在缓存库中没有查找到与该scriptId相同的已经编译好的清洗脚本script,说明该scriptId指定的清洗脚本是第一次执行,则调用VM模块对该scriptId指定的清洗脚本进行编译,得到编译后的清洗脚本script,并将编译后的清洗脚本script确定为待执行清洗脚本,同时,将编译后得到的清洗脚本script缓存到内存中。接着,脚本执行服务端通过执行该待执行清洗脚本,对原始事件数据进行数据清洗。
本实施例接收到终端设备发送的原始事件数据后,确定原始事件数据有效性;若确定原始事件数据有效,则基于原始事件数据生成对应的数据清洗请求;根据数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于待执行清洗脚本对原始事件数据进行数据清洗。由此可知,本实施例通过待执行清洗脚本对原始事件数据进行数据清洗,即数据清洗的过程中,将数据清洗函数从数据清洗业务逻辑中分离出来,在需要新增或者修改数据清洗业务逻辑时,用户可以在待执行清洗脚本中新增或者修改对应的数据清洗函数,而不用新增或者修改整个模块,从而提高了数据清洗的可配置性。
进一步地,参照图3,图3是本申请数据的清洗方法另一实施例的流程示意图,所述步骤20之后,还包括:
步骤S40,根据所述参数信息中的设备标识信息,确定所述数据清洗请求对应的消息队列分区;
步骤S50,将所述数据清洗请求插入到所述消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次执行所述消息队列分区中的数据清洗请求。
需要说明的是,数据清洗系统还包括Kafka服务端,Kafka服务端是数据清洗服务端和脚本执行服务端的通信总线,也即脚本执行服务端根据配置参数建立和Kafka服务端的连接,同时,数据清洗服务端根据配置参数建立和Kafka服务端的连接,如图4所示,图4是本申请数据的清洗方法数据清洗服务端、脚本执行服务端和Kafka服务端通信连接示意图。Kafka服务端中有2个主题,分别为主题Topic1和主题Topic2,其中,主题Topic1用于缓存数据清洗服务端发送的数据清洗请求。主题Topic2用于缓存脚本执行服务端返回的数据清洗结果。如图4所示,脚本执行服务端通过订阅主题Topic1,异步接收并执行数据清洗请求,然后将数据清洗结果发送到主题Topic2。数据清洗服务端则向主题Topic1发送数据清洗请求,并通过订阅主题Topic2,异步接收数据清洗结果。为了应对高并发场景,主题Topic1可以设置多个消息队列分区,如图5所示,图5是本申请数据的清洗方法消息队列分区的示意图。每个消息队列分区对应一个日志文件,写入主题的消息将按接收顺序写入到分区日志文件中。假设数据清洗服务端发起数据清洗请求的性能指标是N包/秒,而一个脚本执行服务端处理数据清洗请求的能力是M包/秒,则可以估算出主题Topic1的分区个数应至少为P=N/M+1,就可以保证写入到主题Topic1中的数据清洗请求,能够被P个脚本执行服务端及时处理完。
具体地,数据清洗系统中的数据清洗服务端向主题Topic1发送数据清洗请求后,也即将数据清洗请求写入到主题Topic1时,Kafka服务端确定数据清洗请求中参数信息的key值,key值也即设备标识信息deviceId,也可以理解为每一个终端设备的ID。接着,Kafka服务端根据设备标识信息确定数据清洗请求对应的终端设备,也即确定发送原始事件数据的终端设备,进一步需要说明的是,在主题Topic1中,每一种类型的终端设备对应一个消息队列分区。因此,Kafka服务端根据设备标识信息确定数据清洗请求对应的消息队列分区,然后将数据清洗请求插入到该消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次将消息队列分区中的数据清洗请求发送至脚本执行服务端,脚本执行服务端根据Kafka服务端发送的先后顺序依次执行数据清洗请求。
本实施例根据参数信息中的设备标识信息,确定数据清洗请求对应的消息队列分区;将数据清洗请求插入到消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次执行消息队列分区中的数据清洗请求。由此可知,本实施例根据设备标识信息将数据清洗请求分配发送对应的消息队列分区,从而保证来自同一个终端设备的数据清洗请求能够按照时间顺序被写入到同一个分区日志文件中,从而保证来自同一设备的数据清洗请求能够按照时间顺序被脚本执行服务端处理。同时,在各个主题中设备多个消息队列分区,不会因数据清洗请求不能及时处理而造成积压,从而提升数据清洗请求的处理效率,再者,通过Kafka服务端作为消息队列,负责数据清洗请求和数据清洗结果的异步转发,利用大吞吐量、低延时的特性,保证在高并发场景下数据清洗的正常运行。
进一步地,参照图6,图6是本申请数据的清洗方法步骤S30的细化流程示意图,所述步骤S30包括:
步骤S301,确定所述参数信息中的脚本标识信息,并根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本;
步骤S302,若在所述脚本缓存库中查询到不存在所述编译脚本,则根据所述参数信息中的脚本内容信息确定对应的数据清洗函数代码;
步骤S303,编译所述数据清洗函数代码,得到对应的目标编译脚本,并将所述目标编译脚本确定为所述待执行清洗脚本;
步骤S304,创建所述待执行清洗脚本的上下文运行对象,并将所述原始事件数据传入至所述上下文运行对象中;
步骤S305,通过超时参数以及传入所述原始事件数据后的上下文运行对象,异步执行所述待执行清洗脚本,对所述原始事件数据进行数据清洗。
具体地,数据清洗系统的脚本执行服务端接收到Kafka服务端发送的数据清洗请求后,对数据清洗请求进行分析,确定数据清洗请求中所携带的脚本标识信息scriptId和脚本内容信息scriptBody。然后,脚本执行服务端根据scriptId在缓存库中查找是否存在与该scriptId相同的已经编译好的清洗脚本script。若在缓存库中没有查找到与该scriptId相同的已经编译好的清洗脚本script,说明该scriptId指定的清洗脚本是第一次执行,则根据脚本内容信息scriptBody确定所要编译的数据清洗函数代码,并调用Node.JS中的VM模块对数据清洗函数代码编译,得到编译后的清洗脚本script(目标编译脚本),并将该目标编译脚本确定为待执行清洗脚本,同时,将该目标编译脚本缓存到内存中,数据清洗函数代码为“(()=>{”+scriptBody+“})()”。接着,脚本执行服务端调用Node.JS的VM模块创建一个该待执行清洗脚本运行时的上下文运行对象sandbox,并将调用args对象将原始事件数据传入至该上下文运行对象sandbox中,如利用args.event.temperature来获取原始事件数据中的温度数据,利用args.event.face来获取原始事件数据中的人脸数据等。脚本执行服务端在准备好运行时的上下文运行对象sandbox后,结合超时参数timeout,并调用Node.JS的VM模块异步执行该待执行清洗脚本,完成对原始事件数据的数据清洗。
进一步地,若在所述脚本缓存库中查询到存在对应的编译脚本,则将编译脚本确定为所述待执行清洗脚本,具体如下:
若在缓存库中查找到了与该scriptId相同的已经编译好的清洗脚本script,说明该scriptId指定的清洗脚本之前已经被执行过了,则将该已经编译好的脚本script确定为待执行清洗脚本。
本实施例确定参数信息中的脚本标识信息,并根据脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本;若在脚本缓存库中查询到不存在编译脚本,则根据参数信息中的脚本内容信息确定对应的数据清洗函数代码;编译数据清洗函数代码,得到对应的目标编译脚本,并将目标编译脚本确定为待执行清洗脚本;创建待执行清洗脚本的上下文运行对象,并将原始事件数据传入至上下文运行对象中;通过超时参数以及传入原始事件数据后的上下文运行对象,异步执行待执行清洗脚本,对原始事件数据进行数据清洗。由此可知,本实施例通过待执行清洗脚本对原始事件数据进行数据清洗,在需要新增或者修改数据清洗业务逻辑时,用户可以在待执行清洗脚本中新增或者修改对应的数据清洗函数,而不用新增或者修改整个模块,从而提高了数据清洗的可配置性。
进一步地,参照图7,图7是本申请数据的清洗方法另一实施例的流程示意图,所述步骤S30之后,还包括:
步骤S60,确定所述待执行清洗脚本在执行过程中是否返回异常提示信息;
步骤S70,若确定所述待执行清洗脚本在执行过程中没有返回所述异常提示信息,则确定所述待执行清洗脚本执行后的数据清洗结果,并将所述数据清洗结果存储至对应的消息队列分区。
数据清洗系统的脚本执行服务端在执行待执行清洗脚本后,确定待执行清洗脚本在执行过程中是否返回异常提示信息。若确定待执行清洗脚本在执行过程中没有返回异常提示信息,脚本执行服务端则确定待执行清洗脚本执行后的数据清洗结果,其中,数据清洗结果采用JSON格式,数据清洗结果包括的信息有{requestId:string,Response:{result:string,success:boolean,errcode:string}},其中,requestId为请求标识信息,表示数据清洗请求的唯一标识,由于数据清洗请求和数据清洗结果之间是异步的,发起数据清洗请求的数据清洗服务段需要通过该请求标识信息来将数据清洗请求和数据清洗结果对应起来。Response为待执行清洗脚本的执行结果,Response中的result表示待执行清洗脚本的返回值,success中的boolean可为true或false。boolean为true则表示待执行清洗脚本执行成功,boolean为false则表示待执行清洗脚本执行失败,errcode表示错误码。因此,脚本执行服务端将数据清洗结果打包为kafka格式为{requestId,Response},并根据requestId将数据清洗结果返回至主题Topic2对应的消息队列分区中。若确定待执行清洗脚本在执行过程中有返回异常提示信息,脚本执行服务端则确定错误信息{“”,false,xxxx},并将requestId和错误信息打包为kafka格式的执行结果{requestId,{“”,false,xxxx}},并根据requestId将执行结果返回至主题Topic2对应的消息队列分区。最后,kafka服务端将数据清洗结果或者执行结果返回至数据清洗系统的数据清洗服务端。
本实施例确定待执行清洗脚本在执行过程中是否返回异常提示信息;若确定待执行清洗脚本在执行过程中没有返回异常提示信息,则确定待执行清洗脚本执行后的数据清洗结果;若确定待执行清洗脚本在执行过程中没有返回异常提示信息,则确定待执行清洗脚本执行后的数据清洗结果,并将数据清洗结果存储至对应的消息队列分区。由此可知,本实施例通过数据清洗结果或者执行结果,查看每一个数据清洗请求通过待执行清洗脚后的结果,从而使得可以准确明了地掌握每一个数据清洗请求通过待执行清洗脚后的结果。
进一步地,参照图8,图8是本申请数据的清洗装置较佳功能模块示意图,所述数据的清洗装置包括:
确定模块10,用于接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性;
生成模块20,用于若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求;
所述确定模块10还用于根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本;
清洗模块30,用于基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
进一步地,所述确定模块10还用于根据所述参数信息中的设备标识信息,确定所述数据清洗请求对应的消息队列分区;
所述清洗模块30还用于将所述数据清洗请求插入到所述消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次执行所述消息队列分区中的数据清洗请求。
进一步地,所述清洗模块30包括:
创建单元,用于创建所述待执行清洗脚本的上下文运行对象;
调用单元,用于将所述原始事件数据传入至所述上下文运行对象中;
清洗单元,用于通过超时参数以及传入所述原始事件数据后的上下文运行对象,异步执行所述待执行清洗脚本,对所述原始事件数据进行数据清洗。
进一步地,所诉确定模块10还用于确定所述参数信息中的脚本标识信息,并根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本;
所述确定模块10还用于若在所述脚本缓存库中查询到不存在所述编译脚本,则根据所述参数信息中的脚本内容信息确定对应的数据清洗函数代码;
所述确定模块10还用于编译所述数据清洗函数代码,得到对应的目标编译脚本,并将所述目标编译脚本确定为所述待执行清洗脚本;
所述确定模块10还用于若在所述脚本缓存库中查询到存在对应的编译脚本,则将编译脚本确定为所述待执行清洗脚本。
所述确定模块10还用于确定所述待执行清洗脚本在执行过程中是否返回异常提示信息;
所述确定模块10还用于若确定所述待执行清洗脚本在执行过程中没有返回所述异常提示信息,则确定所述待执行清洗脚本执行后的数据清洗结果,并将所述数据清洗结果存储至对应的消息队列分区。
本申请数据的清洗装置具体实施方式与上述数据的清洗方法各实施例基本相同,在此不再赘述。
此外,本申请实施例还提出一种计算机可读计算机可读存储介质,所述计算机可读计算机可读存储介质上存储有数据清洗程序,所述数据清洗程序被处理器执行时实现如上所述的数据的清洗方法的步骤。
本申请计算机可读计算机可读存储介质具体实施方式与上述数据的清洗方法各实施例基本相同,在此不再赘述。
此外,本申请实施例还提出一种计算机程序产品,所述计算机程序产品包括包括计算机程序,所述包括计算机程序被所述处理器执行时实现如上所述的数据的清洗方法的步骤。
本申请计算机程序产品具体实施方式与上述数据的清洗方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的数据下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多数据下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件货物的形式体现出来,该计算机软件货物存储在一个计算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台数据清洗系统完成本申请各个实施例所述的方法。
Claims (10)
1.一种数据的清洗方法,其特征在于,所述数据的清洗方法包括:
接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性;
若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求;
根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
2.如权利要求1所述的数据的清洗方法,其特征在于,所述若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求的步骤之后,还包括:
根据所述参数信息中的设备标识信息,确定所述数据清洗请求对应的消息队列分区;
将所述数据清洗请求插入到所述消息队列分区中最先执行的空闲位置,并根据从前到后的顺序依次执行所述消息队列分区中的数据清洗请求。
3.如权利要求1所述的数据的清洗方法,其特征在于,所述基于所述待执行清洗脚本对所述原始事件数据进行数据清洗的步骤包括:
创建所述待执行清洗脚本的上下文运行对象,并将所述原始事件数据传入至所述上下文运行对象中;
通过超时参数以及传入所述原始事件数据后的上下文运行对象,异步执行所述待执行清洗脚本,对所述原始事件数据进行数据清洗。
4.如权利要求1所述的数据的清洗方法,其特征在于,所述根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本的步骤包括:
确定所述参数信息中的脚本标识信息,并根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本;
若在所述脚本缓存库中查询到不存在所述编译脚本,则根据所述参数信息中的脚本内容信息确定对应的数据清洗函数代码;
编译所述数据清洗函数代码,得到对应的目标编译脚本,并将所述目标编译脚本确定为所述待执行清洗脚本。
5.如权利要求4所述的数据的清洗方法,其特征在于,所述根据所述脚本标识信息在脚本缓存库中查询是否存在对应的编译脚本的步骤之后,还包括:
若在所述脚本缓存库中查询到存在对应的编译脚本,则将编译脚本确定为所述待执行清洗脚本。
6.如权利要求1至5任一项所述的数据的清洗方法,其特征在于,所述根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本,并基于所述待执行清洗脚本对所述原始事件数据进行数据清洗的步骤之后:
确定所述待执行清洗脚本在执行过程中是否返回异常提示信息;
若确定所述待执行清洗脚本在执行过程中没有返回所述异常提示信息,则确定所述待执行清洗脚本执行后的数据清洗结果,并将所述数据清洗结果存储至对应的消息队列分区。
7.如权利要求1所述的数据的清洗方法,其特征在于,所述待执行清洗脚本为JavaScript清洗脚本。
8.一种数据的清洗装置,其特征在于,所述数据的清洗装置包括:
确定模块,用于接收到终端设备发送的原始事件数据后,确定所述原始事件数据有效性;
生成模块,用于若确定所述原始事件数据有效,则基于所述原始事件数据生成对应的数据清洗请求;
所述确定模块还用于根据所述数据清洗请求中的参数信息确定对应的待执行清洗脚本;
清洗模块,用于基于所述待执行清洗脚本对所述原始事件数据进行数据清洗。
9.一种数据清洗系统,其特征在于,所述数据清洗系统包括存储器、处理器和存储在所述存储器上并在所述处理器上运行的数据清洗程序,所述数据清洗程序被所述处理器完成时实现如权利要求1至7中任一项所述的数据的清洗方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据清洗程序,所述数据清洗程序被处理器完成时实现如权利要求1至7中任一项所述的数据的清洗方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110629498.8A CN113377752B (zh) | 2021-06-04 | 2021-06-04 | 数据的清洗方法、装置、系统及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110629498.8A CN113377752B (zh) | 2021-06-04 | 2021-06-04 | 数据的清洗方法、装置、系统及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113377752A true CN113377752A (zh) | 2021-09-10 |
CN113377752B CN113377752B (zh) | 2023-03-14 |
Family
ID=77576198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110629498.8A Active CN113377752B (zh) | 2021-06-04 | 2021-06-04 | 数据的清洗方法、装置、系统及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377752B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113850494A (zh) * | 2021-09-22 | 2021-12-28 | 广东电网有限责任公司 | 一种数据加载方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107528769A (zh) * | 2017-02-20 | 2017-12-29 | 天津转知汇网络技术有限公司 | 终端、服务端及即时通讯方法和系统 |
US20180113887A1 (en) * | 2016-10-20 | 2018-04-26 | Microsoft Technology Licensing, Llc | Generating tables based upon data extracted from tree-structured documents |
CN109766124A (zh) * | 2018-12-26 | 2019-05-17 | 深圳左邻永佳科技有限公司 | 业务开发方法、装置、计算机设备和存储介质 |
CN110297919A (zh) * | 2019-05-23 | 2019-10-01 | 深圳壹账通智能科技有限公司 | 一种数据清洗方法、装置、设备及存储介质 |
CN110809768A (zh) * | 2018-06-06 | 2020-02-18 | 北京嘀嘀无限科技发展有限公司 | 数据清洗系统和方法 |
CN112783874A (zh) * | 2019-11-08 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 一种数据分析方法、装置和系统 |
-
2021
- 2021-06-04 CN CN202110629498.8A patent/CN113377752B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180113887A1 (en) * | 2016-10-20 | 2018-04-26 | Microsoft Technology Licensing, Llc | Generating tables based upon data extracted from tree-structured documents |
CN107528769A (zh) * | 2017-02-20 | 2017-12-29 | 天津转知汇网络技术有限公司 | 终端、服务端及即时通讯方法和系统 |
CN110809768A (zh) * | 2018-06-06 | 2020-02-18 | 北京嘀嘀无限科技发展有限公司 | 数据清洗系统和方法 |
CN109766124A (zh) * | 2018-12-26 | 2019-05-17 | 深圳左邻永佳科技有限公司 | 业务开发方法、装置、计算机设备和存储介质 |
CN110297919A (zh) * | 2019-05-23 | 2019-10-01 | 深圳壹账通智能科技有限公司 | 一种数据清洗方法、装置、设备及存储介质 |
CN112783874A (zh) * | 2019-11-08 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 一种数据分析方法、装置和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113850494A (zh) * | 2021-09-22 | 2021-12-28 | 广东电网有限责任公司 | 一种数据加载方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113377752B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110365724B (zh) | 任务处理方法、装置及电子设备 | |
CN109343983B (zh) | 功能模块间的信息交互方法、装置、设备及存储介质 | |
CN111679886A (zh) | 异构计算资源调度方法、系统、电子设备及存储介质 | |
CN107748658B (zh) | 一种软件开发方法、系统、计算机可读存储介质及电子设备 | |
CN113377752B (zh) | 数据的清洗方法、装置、系统及计算机可读存储介质 | |
CN116204239A (zh) | 业务处理方法、装置和计算机可读存储介质 | |
CN114567571B (zh) | 性能测试方法、装置、电子设备和计算机可读存储介质 | |
CN111221841A (zh) | 基于大数据的实时处理方法及装置 | |
CN114116388A (zh) | 一种小程序数据采集方法、装置、设备及可读存储介质 | |
CN112416698B (zh) | 监控系统的扩展方法及装置、存储介质及电子设备 | |
CN114860468A (zh) | 一种sdk调用方法、装置、计算机设备及存储介质 | |
CN106570143B (zh) | 一种发送响应对象的方法和装置 | |
CN113778698A (zh) | 服务器通信方法及装置、存储介质及设备 | |
CN111611077A (zh) | 任务参数处理方法、终端和存储介质 | |
CN117883789B (zh) | 数据获取方法、装置、设备、可读存储介质及程序产品 | |
CN112699034B (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN113536074B (zh) | vue框架中的关键字查询方法、装置、计算机设备及介质 | |
CN111124923B (zh) | 运行状态查询方法、装置、服务器设备及存储介质 | |
CN111476663B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN111984341B (zh) | 项目监测方法、装置、电子设备和存储介质 | |
CN112817813A (zh) | 基于react hooks的数据收集方法、装置及设备 | |
CN115757570A (zh) | 一种日志数据分析方法、装置、电子设备及介质 | |
CN117883789A (zh) | 数据获取方法、装置、设备、可读存储介质及程序产品 | |
CN115373638A (zh) | 前端与后端的数据处理方法、装置、设备及存储介质 | |
CN111090426A (zh) | 一种http请求处理的方法、系统及设备 |
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 |