技术领域
[0001] 本
发明实施例涉及数据清洗技术领域,具体涉及一种日志数据的清洗方法、装置、电子设备和存储介质。
背景技术
[0002]
现有技术中,在对日志数据清洗的过程中,考虑到用json直接来取,在这个过程中
发明人发现:日志数据并不仅仅是标准的json,可能包括多种类型的日志数据,若采用json对日志数据进行取,会导致清
洗出来的数据不准确。
发明内容
[0003] 本发明的至少一个实施例提供了一种日志数据的清洗方法、装置、电子设备和存储介质,解决了现有技术中清洗不准确的技术问题。
[0004] 第一方面,本发明实施例提出一种日志数据的清洗方法,包括:
[0005] 获取待清洗的日志数据;
[0006] 对日志数据进行切分,获得第一类型数据和第二类型数据;
[0007] 分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段;
[0009] 在一些实施例中,上述方法中分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段包括:
[0010] 将第一类型数据构建成至少一个数组,以及从第二类型数据中提取至少一个关键字对。
[0011] 在一些实施例中,上述方法中从第二类型数据中提取至少一个关键字对包括:
[0012] 根据第二类型数据中的标点符号,从第二类型数据中提取至少一个关键字段,以及与关键字段对应的关键值,关键字段与关键值构成一个关键字对。
[0013] 在一些实施例中,从第二类型数据中提取至少一个关键字对具体为:
[0014] 通过哈希命令从第二类型数据中提取至少一个关键字对,并将关键字对存储到哈希图中。
[0015] 第二方面,本发明实施例还提出一种日志数据的清洗装置,包括:
[0016] 获取模
块,用于获取待清洗的日志数据;
[0017] 切分模块:用于对日志数据进行切分,获得第一类型数据和第二类型数据;
[0018] 清洗模块:用于分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段;
[0019] 存储模块:用于将日志清洗字段存储到数据库中。
[0020] 在一些实施例中,上述装置中的清洗模块分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段包括:
[0021] 将第一类型数据构建成至少一个数组,以及从第二类型数据中提取至少一个关键字对。
[0022] 在一些实施例中,上述装置中的清洗模块从第二类型数据中提取至少一个关键字对包括:
[0023] 根据第二类型数据中的标点符号,从第二类型数据中提取至少一个关键字段,以及与关键字段对应的关键值,关键字段与关键值构成一个关键字对。
[0024] 在一些实施例中,上述装置中的清洗模块从第二类型数据中提取至少一个关键字对具体为:
[0025] 通过哈希命令从第二类型数据中提取至少一个关键字对,并将关键字对存储到哈希图中。
[0026] 第三方面,本发明实施例还提供了一种电子设备,包括:处理器和
存储器;
[0027] 处理器通过调用存储器存储的程序或指令,用于执行上述日志数据清洗方法的步骤。
[0028] 第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储程序或指令,程序或指令使计算机执行上述日志数据清洗的方法的步骤。
[0029] 本发明实施例中提供的日志数据清洗方法的优点在于:对待清洗的日志数据进行切分,得到不同类型的日志数据;对不同类型的日志数据采用不同的方法进行清洗,得到日志清洗字段不仅提高了日志数据清洗的准确性,并且将日志清洗字段存储到数据库中,方便用户在后续使用过程中对清洗字段进行查询、分析。
附图说明
[0030] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0031] 图1是本发明实施例提供的一种日志数据清洗方法的流程示意图;
[0032] 图2为本发明实施例提出的一种日志清洗装置的结构示意图;
[0033] 图3为本发明实施例提供的电子设备的
硬件结构示意图。
具体实施方式
[0034] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。基于所描述的本发明的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0035] 需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0036] 图1是本发明实施例提供的一种日志数据清洗方法的流程示意图;
[0037] 第一方面,本发明实施例提出一种日志数据的清洗方法,结合图1,包括:以下四个步骤:S101、S102、S103和S104。
[0038] S101:获取待清洗的日志数据;
[0039] 具体的,本发明实施例中的待清洗数据是从对象存储系统中获取的,获取到待清洗数据后进行解压,解压后对待清洗的数据进行遍历、读取和切分。
[0040] S102:对日志数据进行切分,获得第一类型数据和第二类型数据;
[0041] 具体的,本发明实施例中对日志数据进行切分,可以是切分分隔符,如tab,用户可以根据实际情况自定义切分分隔符,切分获得不同类型的日志数据,提高了日志数据清洗的灵活性。
[0042] S103:分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段;
[0043] 具体的,本发明实施例中对不同类型的数据采用不同的方法进行清洗,提高了日志数据清洗的准确性。
[0044] S104:将日志清洗字段存储到数据库中。
[0045] 具体的,本发明实施例中将日志清洗字段存储到数据库中,方便用户在后续过程中对清洗字段进行查询、分析。
[0046] 在一些实施例中,上述方法中步骤S103中分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段包括:
[0047] 将第一类型数据构建成一个数组,以及从第二类型数据中提取至少一个关键字对。
[0048] 具体的,本发明实施例中以push日志数据为例,将push日志清洗到push表中,第一类型数据如下:
[0049] Push2019-08-15 22:03:44 265235 0AB97D4737216992B62D6F5005088D05 0 101117.140.220.7 XpbsErvw9K 2097652523832
[0050] 切分后得到的第一类型数据为:
[0051] 2019-08-1522:03:44265235,0AB97D4737216992B62D6F5005088D05,0,101,117.140.220.7,XpbsErvw9K,209765,null,2523832
[0052] 本发明实施例中的分隔符为逗号,构建的一个数组用array及其下标表示,获得push,构建的数组的第一个值为下标为0array[0])就是push;
[0053] 获得“2019-08-15 22:03:44 265235”构建数组的第二个值为下标为1array[1])就是2019-08-15 22:03:44 265235;
[0054] 获得“0AB97D4737216992B62D6F5005088D05”,构建的数组的第三个值为下标为2,[0055] array[2]就是0AB97D4737216992B62D6F5005088D05;
[0056] 获得“0”,构建的数组array[3])就是0;
[0057] 获得“101”构建的数组array[4])就是101;
[0058] 获得“117.140.220.7”,构建的数组的下标为5array[5]就是117.140.220.7;
[0059] 获得“XpbsErvw9K”,构建的数组的下标为6array[6])就是XpbsErvw9K;
[0060] 获得“209765”构建的数组的下标为7array[7])就是209765;
[0061] 获得“null”构建的数组的下标为8array[8])就是null;
[0062] 获得“2523832”构建的数组的下标为9array[9])就是2523832。
[0063] 上面的实施例主要介绍的是第一类型数据的清洗,下面介绍第二类型数据的清洗。
[0064] 在一些实施例中,上述方法中从第二类型数据中提取至少一个关键字对包括:
[0065] 根据第二类型数据中的标点符号,从第二类型数据中提取至少一个关键字段,以及与关键字段对应的关键值,关键字段与关键值构成一个关键字对。
[0066] 第二类型数据如下:
[0067] {"err":0,"rmip":"192.168.5.197","r_x":"q","reqId":"73eeb9fdf130054baca38e3a749a18c7","adzoneid":1000000000381,"meid":91160871,"blTime":"0.4511","site_url":"www.iqiyi.com","site_title":"2019u5b9du9a6cu9526u6807u8d5bu7b2cu4e00u8f6eu7126u70b9u7ec4","site_channelid":40004,"iswifi":1,"device_osv":"8.1.0","device_model":"V1818CA","device_connectiontype":"2","device_type":"phone","os":"android","mtype":"imei","muid":"0AB97D4737216992B62D6F5005088D
05","plat":2,"aftime":"8.9960","upidip":0,"afidip":0,"afcode":"1004","ischeck":1,"tyscore":10,"aderId":47,"divType":2,"dmpId":1012,"dmpTime":
1.766,"d_pg":"1103080,1103084,1103096,1103083,1103521,1103522,1103762,
1104336,1104342,1104613,1120754,1120756,1121101,1121100,1121063,1121078,
1121130","dmpres":"ZR,TYZR,1121063","cc_debug_delete":2523499,"newtags":1,"cmrd":1,"o_freqtime1":"0.5641","fqc":"0|0","fqc_brand":"57|57","s_cachedata":
1,"mumtag":0,"divTime":"14.7920","plat_new":2,"position_id":1242,"campaign_group_id":2250,"isTA":1,"cmsTa":"0.7","TA":1,"taScore":1,"so":64,"rolltype":
1,"cid":"21393259","p":1,"usetime":15.8251953125}
[0068] 根据第二类型数据中的标点符号,提取的至少一个关键字段,以及与关键字段对应的关键值,如下:
[0069] {(err,0),(rmip,192.168.5.197),(r_x,q),(reqId,73eeb9fdf130054baca38e3a749a18c7),(adzoneid,1000000000381)…}
[0070] 关键字段与关键值构成一个关键字对,如(err,0)就是一个关键字对,(rmip,192.168.5.197)是另一个关键字对,err是关键字段,0是err对应的关键值,rmip关键字段,
192.168.5.197是rmip对应的关键值,这里只是举例说明,不做唯一限定。
[0071] 在一些实施例中,从第二类型数据中提取至少一个关键字对具体为:
[0072] 通过哈希命令从第二类型数据中提取至少一个关键字对,并将关键字对存储到哈希图中。
[0073] 本
申请实施例把标点符号"到",的数据取个名字叫做font,也就是关键字段,把:"到",或者:到,这个范围内的数据取个名字叫做values,也就是关键字段对应的关键值,然后利用Hashmap.put(font,values)就会存储到哈希图中。
[0074] 具体的,本发明实施例通过哈希命令从第二类型数据中提取至少一个关键字对,本发明实施例中的哈希命令使用得是hashmap命令,hashmap是一个个的关键值对而且把清洗的字段存储到哈希图中。
[0075] 本申请实施例中若获取err,rmip的关键值,可以利用命令hashmap.get(‘err’)获得0,利用命令hashmap.get(‘rmip’)获得192.168.5.197。
[0076] 上述第二类型数据中,利用Hashmap.put(font,values)存储到到哈希图的过程中,当执行下一条put方法的时候会把相同的关键字段对应的关键值替换成下一条的关键值,以此类推这样在清洗数据的时候每个字段只清洗一遍,大大提高了日志数据的清洗效率。
[0077] 图2为本发明实施例提出的一种日志清洗装置的结构示意图;
[0078] 第二方面,结合图2,本发明实施例还提出一种日志数据的清洗装置,包括:
[0079] 获取模块201,用于获取待清洗的日志数据;
[0080] 具体的,本发明实施例中的待清洗数据是从对象存储系统中获取的,获取到待清洗数据后进行解压,方便后续读取。
[0081] 切分模块202:用于对日志数据进行切分,获得第一类型数据和第二类型数据;
[0082] 具体的,本发明实施例中对日志数据进行切分,可以是切分分隔符,如tab,用户可以根据实际情况自定义切分分隔符,切分获得不同类型的日志数据。
[0083] 清洗模块203:用于分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段;
[0084] 具体的,本发明实施例中对不同类型的数据采用不同的方法进行清洗,提高了日志数据清洗的准确性。
[0085] 存储模块204:用于将日志清洗字段存储到数据库中。
[0086] 具体的,本发明实施例中将日志清洗字段存储到数据库中,方便用户在后续过程中对清洗字段进行查询、分析。
[0087] 在一些实施例中,上述装置中的清洗模块203分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段包括:
[0088] 将第一类型数据构建成至少一个数组,以及从第二类型数据中提取至少一个关键字对。
[0089] 具体的,切分后得到的第一类型数据为:
[0090] 2019-08-1522:03:44265235,0AB97D4737216992B62D6F5005088 D05,0,101,117.140.220.7,XpbsErvw9K,209765,null,2523832)
[0091] 本发明实施例中的分隔符为逗号,清洗模块构建的至少一个数组用array及其下标表示,获得push,构建的第一个数组array[0])就是push;
[0092] 获得“2019-08-15 22:03:44 265235”构建的第二个数组array[1])就是2019-08-15 22:03:44 265235,在此不再进行一一列举。
[0093] 具体的,第二类型数据如下:{"err":0,"rmip":"192.168.5.197",[0094] 提取关键字对后如下:{(err,0),(rmip,192.168.5.197),
[0095] 在一些实施例中,上述装置中的清洗模块203从第二类型数据中提取至少一个关键字对包括:
[0096] 根据第二类型数据中的标点符号,从第二类型数据中提取至少一个关键字段,以及与关键字段对应的关键值,关键字段与关键值构成一个关键字对。
[0097] 在一些实施例中,上述装置中的清洗模块203从第二类型数据中提取至少一个关键字对具体为:
[0098] 通过哈希命令从第二类型数据中提取至少一个关键字对,并将关键字对存储到哈希图中。
[0099] 本申请实施例的清洗模块把标点符号"到",的数据取个名字叫做font,也就是关键字段,把:"到",或者:到,这个范围内的数据取个名字叫做values,也就是关键字段对应的关键值,然后利用Hashmap.put(font,values)就会存储到到哈希图中。
[0100] 具体的,本发明实施例的清洗模块通过哈希命令从第二类型数据中提取至少一个关键字对,本发明实施例中的哈希命令使用得是hashmap命令,hashmap是一个个的关键值对而且把清洗的字段存储到哈希图中。
[0101] 第三方面,本发明实施例还提供了一种电子设备,包括:处理器和存储器;
[0102] 处理器通过调用存储器存储的程序或指令,用于执行上述日志数据清洗方法的步骤。
[0103] 第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储程序或指令,程序或指令使计算机执行上述日志数据清洗的方法的步骤。
[0104] 图3为本发明实施例提供的电子设备的硬件结构示意图,如图3所示,该电子设备可以包括手机、PAD的智能终端,该电子设备包括:
[0105] 一个或多个处理器301,图3中以一个处理器301为例;
[0106] 存储器302;
[0107] 所述电子设备还可以包括:输入装置303和输出装置304。
[0108] 所述电子设备中的处理器301、存储器302、输入装置303和输出装置304可以通过总线或者其他方式连接,图2中以通过总线连接为例。
[0109] 存储器302作为一种非暂态计算机可读存储介质,可用于存储
软件程序、计算机可执行程序以及模块,如本发明实施例中的应用程序的界面显示方法对应的程序指令/模块(例如,附图2所示的获取模块201、切分模块202、清洗模块203和存储模块204)。处理器301通过运行存储在存储器302中的软件程序、指令以及模块,从而执行
服务器的各种功能应用以及
数据处理,即实现上述方法实施例的界面显示方法。
[0110] 存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储
操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器302可以包括高速
随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0111] 输入装置303可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键
信号输入。输出装置304可包括显示屏等显示设备。
[0112] 本发明实施例还提供一种包含计算机可读存储介质,该计算机可读存储介质存储程序或指令,该程序或指令使计算机执行行时用于执行一种日志数据的清洗方法,该方法包括:
[0113] 获取待清洗的日志数据;
[0114] 对日志数据进行切分,获得第一类型数据和第二类型数据;
[0115] 分别对第一类型数据和第二类型数据进行清洗,以获得日志清洗字段;
[0116] 将日志清洗字段存储到数据库中。
[0117] 可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本发明任意实施例所提供的日志数据的清洗方法的技术方案。
[0118] 通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过
硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的
软盘、
只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、
硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例所述的方法。
[0119] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0120] 本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
[0121] 虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种
修改和变型,这样的修改和变型均落入由所附
权利要求所限定的范围之内。