本发明涉及大数据领域的数据解析技术,更具体地说,本发明涉及一种从非结构化数据提取结构化数据的方法。
背景技术:
运维数据不仅数量惊人,种类繁多,而且产出位置也各不相同,处理起来十分复杂,而我们往往需要在几秒钟内得到答案。我们需要有一种方法或方式能从海量数据中快递定位,找到问题,找到根因。同时,这些数量庞大的数据还包含了许多对企事业单位、各组织机构或个人都十分有价值的信息。我们需要有一种方法或方式把这些数据变成有意义、有价值的信息,从而产生影响。
能够在生产环境中保存、存储、加载、编辑、输入、输出和部署一个数据结构的解析系统称为解析器。开发一种从非结构化数据提取结构化数据的方法的人称为开发人员。开发人员检查样本数据、理解样本数据的类型和字段,再开发解析器(parser),然后将解析器部署在实际生产环境中,数据会在实际生产环境中被数据分析体系解析和使用。具体地,开发人员的工作就是首先将样本数据中的数据记录归类,然后针对每一类的数据记录,从中提取字段,并给字段命名,将这些字段具体化为数值、字符串、ip地址等。为了成功创造出可以扫描样本数据,给样本数据归类,从样本数据中提取、输出字段的一种从非结构化数据提取结构化数据的方法,开发人员必须执行上述两步操作。传统的一种从非结构化数据提取结构化数据的方法采用三种方法来开发和部署解析器。1.使用高级编程语言开发解析器。2.传统方式需要编程人员编码正则表达式(regex)。3.传统开发方式是在如json或者xml的更加简单的脚本中开发解析器定义。在开发出这些解析器后,传统系统采用将解析器复制到文件的方式将其部署到生产系统中。
传统解析方法的主要缺点有:
1.开发人员需要熟练掌握模式匹配语言或者高水平编程语言;当要解析的数据量大,种类繁多时,使用这些语言很难维护,调试起来也很困难;2.开发人员需要检查样本数据,理解样本数据的记录类型和有意义的字段,根据个人对模式匹配语言或者高水平编程语言的掌握情况,开发出解析模式;3.开发人员不得不手动编写解析器。没有方便的图形化开发环境。没有可增编的交互性工具,开发人员需要在开发前将所有的设计熟练于心或者以文档形式呈现;4.开发人员在开发过程中没有快速方法检测解析器的正确性,而只能实际部署于生产中后才能发现解析器中的错误;5.因为缺少冲突处理工具,传统的解析系统中,手写的传统解析器是没有再次使用能力的;6.如果部署解析器时要做一些改变,就需要重新启动整个数据处理系统。
技术实现要素:
针对上述技术中存在的不足之处,本发明提供一种从非结构化数据提取结构化数据的方法,解析操作基于图形化界面,操作灵活,无需面对编程文件,利于开发、更新与维护。
为了实现根据本发明的这些目的和其它优点,本发明通过以下技术方案实现:
本发明提供一种从非结构化数据提取结构化数据的方法,其包括以下步骤:
建立模式库,其包括基于正则表达式编写获得的若干个模式;
基于图像化操作,建立一个空的解析器;
获取待解析数据中的一部分作为样本数据,了解解析需求;
根据所述解析需求,调用至少一个所述模式,依次编辑分类规则和解析规则以对样本数据分类和解析,所述分类规则和所述解析规则存储至所述解析器;
显示所述解析规则解析的样本数据的字段值名;
在gui上将解析器部署至实际使用环境,解析结果输出到数据分析的下一步骤。
建立所述解析器,包括以下步骤:
建立主解析树;
在所述主解析树树根上以树节点方式并列添加至少一个解析节点并自动生成一个与所述解析节点并列的其他节点;
在所述解析节点上启动对数据分类的分类单元以及对分类后数据解析的解析单元;在所述其他节点启动所述解析单元;
在每个所述分类单元中,基于至少一种正向规则和/或反向规则,调用至少一个所述模式编辑形成所述分类规则,符合任一解析节点上分类单元分类规则的数据分配至该节点;若不符合,分配至所述其他节点;
在所述解析单元中,调用至少一个所述模式编辑形成所述解析规则以对分类后的数据进行解析。
优选的是,建立所述解析器,还包括步骤:
以树节点方式,添加与所述主解析树并列的至少一个子解析树;
在每个所述子解析树上以与所述主解析树相同方式添加所述解析节点、所述分类单元、所述解析单元以及自动生成一个其他节点;
依次启动所述分类单元、所述解析单元,以对数据进行分类和解析。
优选的是,添加所述解析节点,还包括以下步骤:
在所述解析节点上,以树节点方式并列添加至少一个解析子节点,在所述解析子节点启动所述分类单元以分类;
所述解析节点的解析单元移至对应添加的每个所述解析子节点以解析;
其中,添加所述解析子节点时,自动生成一个与所述解析子节点并列的其他节点;
所述解析子节点的解析单元移至相对应的最后一级所述子节点以解析。
优选的是,建立所述解析器,还包括以下步骤:
在所述主解析树、所述子解析树、所述解析节点、所述其他节点、所述解析子节点及其所述子节点上:
编辑名称;
编辑并显示当前解析的数据类型;
编辑用于添加供识别的标签;以及,
对解析器进行修改、编辑以及删除的操作。
在所述主解析树、所述子解析树、所述解析节点以及所述解析子节点上:
将一个解析树上的一个节点上复制粘贴到另外一棵解析树上以新建一个节点,或者在同一棵解析树内复制一个节点后粘贴该节点以新建一个节点;
以树节点方式添加节点。
优选的是,编辑所述分类规则或所述解析规则,包括以下步骤:
启动规则编辑栏;
若编辑分类规则,则选择至少一种正向规则和/或反向规则后,调用至少一个所述模式编辑形成分类规则,并将分类规则应用到对应的数据,对数据进行分类;
若编辑解析规则,选择至少一个所述模式拖拽至规则编辑栏进行编辑,形成所述解析规则,解析规则应用到对应的数据中,对数据进行解析。
优选的是,显示所述解析规则解析的样本数据的字段值名,还包括步骤:
下载、存储、部署、复用所述解析器,在gui上将解析器发送至实际使用环境部署,解析结果输出到数据分析的下一步骤。
本发明至少包括以下有益效果:
本发明提供的从非结构化数据提取结构化数据的方法,基于树节点方式以及图形化操作界面,上传待解析的样本数据后,调用解析器数据库中的至少一个模式进行编辑形成解析规则保存到解析器,形成解析器,以抽取样本数据中与解析规则对应的字段并显示;整个解析过程,基于图形化界面,操作灵活,无需面对编程文件,利于开发、更新与维护。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1为本发明所述的从非结构化数据提取结构化数据的方法的流程示意图;
图2为本发明所述的建立包括主解析树的解析器的流程示意图;
图3为本发明所述的建立包括子解析树的解析器的流程示意图;
图4为本发明所述的添加解析子节点的流程示意图;
图5为本发明所述的编辑解析规则的流程示意图;
图6为本发明所述的分类规则和解析规则编辑的示意图
图7为本发明所述的解析树的节点示意图;
图中:
10-主解析树;
11-解析节点;
12-其他节点;
111-解析子节点。
20-子解析树;
30-解析器规则编辑gui;
31-规则编辑栏;
32-复合模式单元;
33-一般模式单元;
34-字段值命名显示单元。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
应当理解,本文所使用的诸如“具有”、“包含”以及“包括”术语并不排除一个或多个其它元件或其组合的存在或添加。
如图1所示,本发明所述的从非结构化数据提取结构化数据的方法,其包括以下步骤:
s10,建立模式库,其包括基于正则表达式编写获得的若干个模式;
s20,基于图像化操作,建立一个空的解析器;
s30,获取待解析数据中的一部分作为样本数据,了解解析需求;
s40,根据解析需求,调用至少一个模式,依次编辑分类规则和解析规则以对样本数据分类和解析,分类规则和解析规则存储至解析器;
s50,显示解析规则解析的样本数据的字段值名;
s60,在gui上将形成的解析器发送到实际环境中部署,解析结果输入到数据分析的下一步骤。
上述实施方式中,模式是用正则表达式编写的,用来代表不同日志文本的共同分割方案。每行日志的分割方案结构相似,因而开发人员能给同样的分割一个名字,称之为某某模式。本发明定义该同样的分割为模式。至少包括一般模式(normalpattern)和复合模式(containerpattern)两大类。
上述实施方式中,如图2和图7所示,步骤s20中,建立解析器,包括以下步骤:
s21,建立主解析树;
s22,在主解析树树根上以树节点方式并列添加至少一个解析节点并自动生成一个与解析节点并列的其他节点;
s23,在解析节点上启动对数据分类的分类单元以及对分类后数据解析的解析单元;在其他节点启动解析单元;
s24,在每个分类单元中,基于至少一种正向规则(positiverule)和/或反向规则(negativerule),调用至少一个模式编辑形成分类规则,符合任一解析节点上分类单元分类规则的数据分配至该节点;若不符合,分配至其他节点;
s25,在解析单元中,调用至少一个模式编辑形成解析规则以对分类后的数据进行解析,当用户不知道该选择什么模式来拖拽放入解析规则中时,可以选中样本日志中的一部分,系统会自动推荐一个或多个匹配该选中日志部分的模式供用户选择。
对步骤s22-步骤s25补充说明的是,主解析树树根上以树节点方式并列添加至少一个解析节点后,每个解析节点之间的分类规则不同,从而实现对样本数据的不同分类;每个解析节点的解析规则可以相同也可以不同。但是,对于同一个解析节点来说,先对分类单元编辑分类规则以对样本数据进行初步分类后,再对该解析节点的解析单元编辑解析规则以对分类后的样本数据进行进一步地解析。
作为上述实施方式的优选,如图3和图7所示,建立解析器还包括步骤:
s26,以树节点方式,添加与主解析树并列的至少一个子解析树;
s27,在每个子解析树上以与主解析树相同方式添加解析节点、分类单元、解析单元以及自动生成一个其他节点;
s28,依次启动分类单元、解析单元,以对数据进行分类和解析。
该实施方式中,子解析树的建立,主要是为了避免主解析树解析的复杂性。至于子解析树和主解析树的分类与解析的区别,本发明示例为:样本数据中存在至少一系列具有相同特征的关联的数据记录,在发送到主解析树进行分类与解析后,用户根据解析后的数据是否分类,建立至少一个子解析树,然后将需要进一步解析的数据发送到子解析树进行进一步分类和解析,不通过后续的主解析树进行解析,这样可以减轻主解析树的解析负担,也有利于专门、单独对这一系列特征进行精确解析,供后续分析,不影响解析结果的完整显示。
作为上述实施方式的优选,如图4和图7示,步骤s22中添加解析节点,还包括以下步骤:
s221,在解析树根节点上,以树节点方式并列添加至少一个解析节点,在解析节点启动分类单元以分类;添加解析节点时,自动生成一个与解析节点并列的其他节点;
s222,解析根节点的解析单元移至对应添加的每个解析节点以解析。
该实施方式中,同一个解析树(主解析树或子解析树)下的不同的解析树节点,可以对样本数据进行基于不同分类规则的初步分类后再继续各自解析;那么,在同一个解析节点后以树节点方式并列添加至少一个解析子节点,是对该解析节点分类下的样本数据进行进一步的分类细化和对应的解析。
另外,设置解析子节点后,解析节点仅存在分类单元进行初步分类,解析节点的解析单元移至对应添加的每个解析子节点上,则解析节点无解析单元用于解析,而是至少一个解析子节点对初步分类后的样本数据进行一步细化分类后,解析子节点上移动获得的解析单元进行后续的解析,以此类推,若需要继续添加子节点,解析节点上的解析单元依次由解析节点、解析子节点移至最后一级的若干个子节点上。
作为上述实施方式的优选,建立解析器,还包括以下步骤:
在主解析树、子解析树、解析节点、其他节点、解析子节点及其子节点上:
该实施方式中,编辑名称供识别与区分,进行命名的若干个解析器以列表形成呈现。供识别的标签的形式和内容,视个人需求而定,本发明不做具体限定。对解析器进行修改、编辑以及删除的操作,具体地,修改指的是修改对应的解析器名称、数据类型和标签;编辑指的是关联跳转至解析器gui30的一般模式单元、复合模式单元、规则编辑栏以及,通过拖拽选择添加至少一个模式至规则编辑栏中进行编辑,形成分类规则或解析规则,显示样本数据中与解析规则对应的字段值名;删除指的是删除子解析树、解析节点、解析子节点以及子节点等操作。
在主解析树、子解析树、解析节点以及解析子节点上:
该实施方式中,将一个解析树上的一个节点上复制粘贴到另外一棵解析树上以新建一个节点,或者在同一棵解析树内复制一个节点后粘贴该节点以新建一个节点,因此,可以改变节点之间的相对位置。
综合上述说明,还需要补充的是,至于解析树、解析节点以及解析子节点的数量,还有非以树节点方式逐级添加子节点的级数以及每级里子节点的数量,均是视样本数据的分类需求而定,本发明不做具体限定。
作为上述实施方式的优选,如图5所示,步骤s40中,编辑分类规则或解析规则,包括以下步骤:
s41,启动规则编辑栏;
s42,若编辑分类规则,则选择至少一种正向规则和/或反向规则后,调用至少一个模式编辑形成分类规则,应用到对应的数据,对数据进行分类;
s43,若编辑解析规则,选择至少一个模式拖拽至规则编辑栏进行编辑,形成解析规则,应用到对应的数据中,对数据进行解析。
该实施方式中,图6为分类规则和解析规则编辑的示意图。另外,步骤s40作为优选,定义复合模式用来编辑复杂的规则,以解析复杂的日志,并可以对复合模式本身和/或一般模式形成的规则进行编辑的规则元素。通过上述解析器对样本数据解析后,可获得与分类规则和解析规则对应的字段显示,具体为显示对应的至少一段数据记录的字段值命名。为了区别不同解析规则的解析结果,对不同解析规则解析出的字段值命名进行不同颜色的突出显示,以便立即看到样本数据解析内容的每一个改变,为开发人员提供交互式设计体验。
作为上述实施方式的优选,显示解析完成的样本数据的字段值名后,还包括步骤:
下载、存储、部署、复用解析器,在gui上将解析器发送到实际使用环境部署,解析结果输入至数据分析的下一步骤。
该实施方式中,显示与编辑栏放入的至少一个模式编辑对应的至少一条数据记录的字段值的命名后,在gui上点击将解析器发送到实际使用环境部署,解析结果输入至数据分析的下一步骤。或者点击存储为本地文件,若下次有类似解析需求,可再上传该解析器供使用。
需要补充说明的是,应用解析规则要求规则和样本数据中的每一行数据记录完全匹配,这意味着如果规则中有任何错误,匹配过程就会失败。这是基于规则表达式解析系统的主要缺点,一个很长的规则包含几十种模式(相当于一个正则表达式有几百个字符到几千字符),这样的正则表达式就很难有效开发或调试。而本发明提供的解析器,可以快速开发长规则。在需要制定一个长规则时,开发人员不需要一次性完成制定整个规则,相反,只需要在样本数据的开始位置放置相匹配的模式,样本数据的所有剩余部分会自动显示成灰色,表明需要进一步解析。如果该过程有错,错误附近的模式和文本都会自动显示成灰色。因此,本发明提供的数据解析器,可以适用于解析结构化数据、半结构化数据和非结构化数据,例如从计算机服务器、网络设备、软件应用、数据库系统等获取的日志数据。
本发明提供的从非结构化数据提取结构化数据的方法,基于树节点方式以及图形化用户界面,上传待解析的样本数据后,调用解析器数据库中的至少一个模式进行编辑形成解析规则保存到解析器,形成解析器,以选取样本数据中与解析规则对应的字段并显示;整个解析过程,基于图形化界面,操作灵活,无需面对编程文件,利于开发、更新与维护。因为创建解析树、各种类型的节点、给每个节点设置用于分类的标签、编辑分类规则、删除节点等操作,工作人员可以随着开发的增量进行数据分类的思考,并随时对开发过程中任何一个环节进行更改,而不使开发过程停滞,不需要提前准备好开发过程中的所有决定,有利于解析器的开发、维护,特别是后期的不断优化与更新。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。