CN110874350A - 结构化日志数据的加工方法和装置 - Google Patents

结构化日志数据的加工方法和装置 Download PDF

Info

Publication number
CN110874350A
CN110874350A CN201910974331.8A CN201910974331A CN110874350A CN 110874350 A CN110874350 A CN 110874350A CN 201910974331 A CN201910974331 A CN 201910974331A CN 110874350 A CN110874350 A CN 110874350A
Authority
CN
China
Prior art keywords
data
processing
json
processing instruction
syntax tree
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
CN201910974331.8A
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN201910974331.8A priority Critical patent/CN110874350A/zh
Publication of CN110874350A publication Critical patent/CN110874350A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本说明书提供一种结构化日志数据的加工方法,所述结构化日志数据为Java脚本对象表示法Json格式的数据,所述方法包括:接收处理指令和待加工的Json数据;所述处理指令包括用来表达数据加工方式的符号或关键字;基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑;所述预置符号集中包括语法规则和所述处理指令的符号和关键字的语法声明,所述语法声明中包括按照Json格式提取Json数据的实现;将对所述Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。

Description

结构化日志数据的加工方法和装置
技术领域
本说明书涉及数据处理技术领域,尤其涉及一种结构化日志数据的加工方法和装置。
背景技术
随着互联网的发展和普及,各种基于网络进行的活动都在源源不断的产生数据。数据挖掘技术能够从大量的数据中发现有价值的知识、模式、规则等信息,为科学研究、商业决策、过程控制等提供辅助支持,成为数据利用的重要方式。
基于网络进行的活动通常被网络服务提供商的各个业务平台以日志的形式记录下来,成为用于挖掘的数据来源,例如用户行为日志、业务平台的运行日志等。这些日志数据通常要先经过数据清洗,经过数据一致性检查、处理无效值及缺失值等加工过程,才能用来进行数据挖掘。
然而,由于不同的网络服务器提供商、乃至同一网络服务提供商的不同业务平台所记录的日志数据都有各自的形式,在进行数据加工时,为每种形式的日志数据分别设计配置方案,花费了开发人员的大量时间精力,而且对该配置方案的使用者来说也需要耗费相当的理解成本。
发明内容
有鉴于此,本说明书提供一种结构化日志数据的加工方法,所述结构化日志数据为Java脚本对象表示法Json格式的数据,所述方法包括:
接收处理指令和待加工的Json数据;所述处理指令包括用来表达数据加工方式的符号或关键字;
基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑;所述预置符号集中包括语法规则和所述处理指令的符号和关键字的语法声明,所述语法声明中包括按照Json格式提取Json数据的实现;
将对所述Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。
本说明书还提供了一种结构化日志数据的加工装置,所述结构化日志数据为Java脚本对象表示法Json格式的数据,所述装置包括:
输入接收单元,用于接收处理指令和待加工的Json数据;所述处理指令包括用来表达数据加工方式的符号或关键字;
处理逻辑单元,用于基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑;所述预置符号集中包括语法规则和所述处理指令的符号和关键字的语法声明,所述语法声明中包括按照Json格式提取Json数据的实现;
结果输出单元,用于将对所述Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。
本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述结构化日志数据的加工方法所述的步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述结构化日志数据的加工方法所述的步骤。
由以上技术方案可见,本说明书的实施例中,通过预置符号集的语法规则和语法声明实现自定义的处理指令、以及对Json(JavaScript Object Notation,Java脚本对象表示法)数据的提取,从而能够基于统一的处理指令来对不同形式的日志数据进行加工,使得开发人员无需针对每种日志数据形式分别进行配置,减少了开发的时间和工作量,同时也使得处理指令的使用者易于理解处理指令的含义,提高了工作效率。
附图说明
图1是本说明书实施例中一种结构化日志数据的加工方法的流程图;
图2是本说明书实施例中一种遍历查询语法树的流程示意图;
图3是本说明书应用示例中一种加工功能模块的清洗流程示意图;
图4是运行本说明书实施例的设备的一种硬件结构图;
图5是本说明书实施例中一种结构化日志数据的加工装置的逻辑结构图。
具体实施方式
本说明书的实施例提出一种新的结构化日志数据的加工方法,开发人员采用预置符号集中的语法规则和语法声明自定义处理指令,并且在处理指令中实现对Json数据的提取,通过自定义处理指令来加工Json格式的日志数据,从而能够利用统一的处理指令来加工来自不同业务平台或不同网络服务提供商的不同形式的日志数据,无需为每种形式分别配置加工方式,极大的降低了开发工作量和开发时间,处理指令的使用者也能够使用同一的处理指令来进行数据加工,无需分别了解每种形式的加工方式,极大的降低了理解成本。
本说明书的实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本说明书实施例中的各项功能。
本说明书的实施例中,待加工的日志数据为Json格式的日志数据。网络活动产生的各种日志数据可能是格式化数据,也可能是非格式化数据。格式化数据中,可能是Json格式,也可能是其他格式如数据库表的记录等。非格式化日志数据和其他格式化日志数据可以转换为Json格式的日志数据后,采用本说明书的实施例进行数据加工。在现有技术中已经提供了多种非格式化数据或其他格式化数据转换为Json格式数据的具体方式,不再赘述。
本说明书的实施例中,开发人员采用预置符号集来自定义对Json格式日志数据(以下简称Json数据)的处理指令。处理指令用来实现对日志数据进行查询、转换、运算、插入、删除、更新等操作中的一项到多项。处理指令包括符号和关键字中的一项或两项,处理指令中符号和/或关键字与其他信息的组合能够表达一种具体的数据加工方式,即对待加工的Json数据要进行怎样的操作。
其中,关键字是在处理指令所使用的编程语言中对编译器有特殊意义的固定单词,具有专门的意义和用途,不能做其他目的使用,如表示数据类型的关键字(boolean、int等)、进行流程控制的关键字(if、else、return等)、保留字(true、false、null等)等等;符号用来命名常量、变量、类、对象、函数、语句以及其他用户自定义项,每种编程语言都有符号的命名规则,符号可以是任何按照命名规则生成的非关键字的字符串。
本说明书的实施例中,采用语言解析工具来实现自定义的处理指令。语言解析工具可以根据自定义的语法规则来自动构造一种语言的识别器(recognizer),编译器(parser)和解释器(translator)等。语法规则用来描述该语言的结构,例如符号、关键字、符号和关键字的顺序、以及符号和关键字的依赖性约束等。符号及关键字的作用(或其实现的功能)通过遵守语法规则的语法声明来表达。给定一个由符号或关键字构建的处理指令,语言解析工具能够根据语法规则和语法声明生成一个程序,该程序运行时将实现由处理指令指定的数据加工过程。
本说明书的实施例中,数据加工的对象是Json数据,而对数据的加工以获得数据为前提,因此处理指令的至少一个符号或关键字的语法声明中包括按照Json格式提取Json数据的实现,即根据Json的格式定义,从Json数据中提取出需要进行加工的数值、字段、文本等。提取Json数据的具体实现可以参照现有技术中的各种工具来实现,如Jsonpath(一种信息抽取类库),不再赘述。
处理指令的表达形式不做限定。考虑到使用者的理解和掌握处理指令的时间精力成本,可以采用已经被开发人员和使用者熟知的表达形式来构建处理指令。例如,在数据处理中使用极为广泛的SQL(Structured Query Language,结构化查询语言)语句可以用来作为处理指令的表达形式,这样无论是开发人员还是使用者都能无成本的理解处理指令的含义。
本说明书的实施例可以采用任意一种语言解析工具,例如PCCTS(PurdueCompiler-Compiler Tool Set,Purdue编译程序的编译程序工具包)、ANTLR(ANother Toolfor Language Recognition,开源语法分析器)等。根据所采用的语言解析工具、实际应用场景日志数据的特点和对日志数据的具体加工需求,开发人员可以编写自定义的语法规则、自定义的符号和关键字、以及符号和关键字的语法声明,本说明书的实施例均不做限定。开发人员将语法规则、符号和关键字、以及符号和关键字的语法声明写入预置符号集中,供语言解析工具使用。
以下举例说明预置符号集中的语法规则和语法声明。
在一个例子中,采用开源语法分析器antlr4作为语言解析工具,以SQL语句作为处理指令的表达形式。antlr4为包括Java,C++在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器、编译器和解释器的框架。开发人员在预置符号集中,编写包括语法规则和所述处理指令的符号和关键字的语法声明,其中,语法声明中按照Json格式提取Json数据采用Jsonpath实现。Jsonpath是一种是从Json数据中抽取指定信息的工具。
以SQL的Select语句为例,在antlr4的g4文件(一种预置符号集)中可以包括如下内容:
Figure BDA0002233117240000051
Figure BDA0002233117240000061
Figure BDA0002233117240000071
Figure BDA0002233117240000081
上述内容中,select语句采用Jsonpath来对Json数据里的具体信息进行访问。
在生成预置符号集后,基于语言解析工具,即可使用自定义的处理指令,对Json格式的日志数据进行加工。
本说明书的实施例中,结构化日志数据的加工方法的流程如图1所示。该加工方法通常以一个软件功能模块的形式来运行,如一个可供调用的程序、一个函数、一个进程等。为描述方便,以下将该软件功能模块称为加工功能模块。
步骤110,接收处理指令和待加工的Json数据;处理指令包括用来表达数据加工方式的符号或关键字。
在进行日志数据的加工时,将处理指令和待加工的Json格式的日志数据传输给加工功能模块。
在一个例子中,待加工的Json数据为:
Figure BDA0002233117240000091
这个例中,处理指令为SQL语句:SELECT upper($.f1)AS$.f FROM source。其中,upper为将字符串转换为大写的转换函数,$为Json数据的根节点,source为通用表名。该SQL语句对Json数据的加工方式是:将Json数据中的f1字段读取出来,并将f1字段的全部字符转换为大写。
步骤120:基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑。如前所述,预置符号集中包括语法规则和该处理指令的符号和关键字的语法声明,至少一个符号或关键字的语法声明中包括按照Json格式提取Json数据的实现。
加工功能模块调用语言解析工具,由语言解析工具按照预置符号集规定的语法规则识别出处理指令中的符号、关键字以及其他信息,再根据预置符号集中符号和关键字的语法声明生成该对应于处理指令的可运行的处理逻辑。该处理指令的至少一个符号或关键字的语法声明中包括按照Json格式提取Json数据的实现,因此生成的处理逻辑中,能够提取Json数据中的信息并对提取的信息进行进一步的加工处理。
不同的语言解析工具可以采用不同的具体过程来生成处理逻辑,本说明书的实施例不做限定。在一种实现方式中,可以基于预置符号集中的语法声明,以符号和关键字为节点生成该处理指令的查询语法树;再根据该处理指令中的符号或关键字遍历查询语法树,生成对Json数据的处理逻辑。由于该处理指令的至少一个符号或关键字的语法声明中包括提取Json数据的实现,因此所生成的语法查询树中至少有一个节点的实现包括了按照Json格式提取Json数据,在遍历查询语法树时将该节点的实现带入了所生成的处理逻辑,使得所生成的处理逻辑能够对Json格式的日志数据进行各种处理操作,如查询、转换、运算、插入、删除、更新等操作中的一项到多项。生成查询语法树、遍历查询语法树生成处理逻辑的具体过程可参照现有的语言解析工具来实现,不再赘述。
在上述实现方式中,当预置符号集不变时,语言解析工具为某一个处理指令生成的查询语法树是不变的,该查询语法树可以多次用来生成该处理指令对Json数据的处理逻辑。为提高效率,可以设置查询语法树缓存,在为某个处理指令生成查询语法树前先在缓存中查找是否已存在该处理指令的查询语法树,如果存在则直接使用缓存中的查询语法树;如果不存在,再基于预置符号集中的语法声明,以符号和关键字为节点生成该处理指令的查询语法树,并将生成的查询语法树存储在缓存中。
上述实现方式中,假设语言解析工具为antlr4,antlr4按照g4文件(一种预置符号集)中的语法规则,在词法分析阶段(lexical analysis)识别出处理指令中的符号、关键字和其他信息,在解析阶段(parser)构建出处理指令的查询语法树(parse tree或syntaxtree)。antlr4按照g4文件中该处理指令的符号及关键字的语法声明遍历该处理指令的查询语法树,生成该处理指令的处理逻辑。
antlr4可以采用两种模式遍历查询语法树,Listener(观察者)模式和Visitor(访问者)模式。由于Listener模式在实现高阶函数或者语法规则时效率较低,采用Visitor模式通常能达到更快的处理速度。
对前述例子SQL的Select语句的g4文件,antlr4采用Visitor模式遍历查询语法树的过程请参见图2。其中,SQLParserVisitor是为Select语句的查询语法树创建的遍历器,在SelectElement、FromClause、JsonPathField等数据提取节点的实现中包括采用Jsonpath访问Json数据的实现。
回到图1,步骤130:将对该Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。
加工功能模块运行处理逻辑对待加工的Json数据进行对应于处理逻辑的操作,将处理逻辑的运行结果作为加工后的日志数据,用于后续的数据挖掘过程。处理逻辑对Json数据的运行结果可以是Json格式的数据,也可以是其他格式的数据,还可以是非格式化数据,本说明书的实施例不做限定。
可见,本说明书的实施例中,采用预置符号集中的语法规则和语法声明自定义处理指令,其中包括对Json(JavaScript Object Notation,Java脚本对象表示法)数据的提取,通过自定义处理指令来加工Json格式的日志数据,能够基于统一的处理指令来对不同形式的日志数据进行加工,无需为每种形式分别配置加工方式,极大的降低了开发工作量和开发时间,同时也使得处理指令的使用者易于理解处理指令的含义,提高了工作效率。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的一个应用示例中,某个网络服务器提供商先将从来自多个业务平台的用户行为日志数据转换为Json格式的日志数据,然后对Json数据进行清洗(一种数据加工行为),清洗后的Json日志数据将作为用户行为历史记录,用来进行个性化数据挖掘,如针对用户的信息推荐、用户的安全等级判定等。
该网络服务提供商的开发人员采用antlr4作为语言解析工具,以SQL语句为处理指令来构建用来进行Json数据清洗的加工功能模块。
开发人员在g4文件(一种预置符号集)中编写SQL语句的语法规则、SQL语句的符号和关键字、以及符号和关键字的语法声明。至少一个符号或关键字的语法声明中包括采用Jsonpath从Json数据中提取指定信息的实现。以之前例子中SQL语句:SELECT upper($.f1)AS$.f FROM source为例,在Select符号的实现中采用Jsonpath来提取和加工Json数据中的字段;upper作为一种聚合函数,在对FUNC(聚合函数的符号)的语法声明中规定upper的处理逻辑。
完成g4文件后,即可采用加工功能模块来进行Json数据的清洗。图3为加工功能模块的一种清洗流程示意图。
加工功能模块的输入为待加工的json数据和一个用来表达处理逻辑的SQL语句。加工功能模块维护有一个查询语法树缓存区,当接收到输入的SQL语句时,加工功能模块先在查询语法树缓存区中查找是否有该SQL语句的查询语法树,如果有则直接使用缓存区中保存的该SQL语句的查询语法树。如果缓存区中没有该SQL语句的查询语法树,加工功能模块调用antlr4提供的解析功能,在lexer阶段完成SQL语句的符号和关键字的识别,在parser阶段完成对整个SQL语句的分析,生成该SQL语句的查询语法树,并保存在缓存区中。
加工功能模块采用antlr4的Visitor模式创建查询语法树的遍历器,将待加工的Json数据传入遍历器,根据该SQL语句遍历查询语法树,在经过的各个节点基于该节点的语法声明,生成该SQL语句对该Json数据的处理逻辑。在生成处理逻辑的过程中引入Jsonpath以及对Json数据的处理能力,通过Jsonpath提取出Json数据中的指定字段,并且可以藉由语法声明自定义对所提取字段的转换、计算等操作。
加工功能模块运行所生成的处理逻辑,处理逻辑的运行结果为Json格式的数据。加工功能模块输出该Json格式的运行结果,作为清洗后的数据,用来进行后续的数据挖掘。
一种实现加工功能模块上述清洗流程的代码如下所示:
public static String doETL(String json,String sql){
try{
ParseTree tree=getParseTree(sql);//根据SQL语句的语法声明生成查询语法树
ETLVisitor visitor=new ETLVisitor(json);//(2)创建Visitor模式的遍历器,将待加工的Json数据传入
return visitor.visit(tree).toString();//遍历查询语法树,返回根据自定义的SQL语句提取并加工处理后的Json格式的运行结果
}catch(Exception e){
log.error("doETL for string json failed with exception:",e);
}
return"{}";
}
与上述流程实现对应,本说明书的实施例还提供了一种结构化日志数据的加工装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的CPU、内存以及存储器之外,结构化日志数据的加工装置所在的设备终端通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图5所示为本说明书实施例提供的一种结构化日志数据的加工装置,所述结构化日志数据为Java脚本对象表示法Json格式的数据,所述装置包括输入接收单元、处理逻辑单元和结果输出单元,其中:输入接收单元用于接收处理指令和待加工的Json数据;所述处理指令包括用来表达数据加工方式的符号或关键字;处理逻辑单元用于基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑;所述预置符号集中包括语法规则和所述处理指令的符号和关键字的语法声明,所述语法声明中包括按照Json格式提取Json数据的实现;结果输出单元用于将对所述Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。
一个例子中,所述处理逻辑单元包括查询语法树子单元和语法树遍历子单元,其中:查询语法树子单元用于基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树;所述语法查询树中至少一个节点的实现包括按照Json格式提取Json数据;语法树遍历子单元用于根据所述处理指令中的符号或关键字遍历查询语法树,生成对所述Json数据的处理逻辑。
上述例子中,所述查询语法树基于开源语法分析器antlr4生成,所述查询语法树的遍历采用antlr4的访问者visitor模式。
上述例子中,所述处理逻辑单元具体用于:当缓存中不存在所述处理指令的查询语法树时,基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树并存储在缓存中。
可选的,所述按照Json格式提取Json数据由信息抽取类库Jsonpath实现。
可选的,所述对Json数据的处理逻辑运行结果为Json格式的数据。
可选的,所述处理指令为结构化查询语言SQL语句。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中结构化日志数据的加工方法的各个步骤。对结构化日志数据的加工方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中结构化日志数据的加工方法的各个步骤。对结构化日志数据的加工方法的各个步骤的详细描述请参见之前的内容,不再重复。
以上所述仅为本说明书的较佳实施例而已,并不用以限制请求保护的其他实施例,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在请求保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (16)

1.一种结构化日志数据的加工方法,所述结构化日志数据为Java脚本对象表示法Json格式的数据,所述方法包括:
接收处理指令和待加工的Json数据;所述处理指令包括用来表达数据加工方式的符号或关键字;
基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑;所述预置符号集中包括语法规则和所述处理指令的符号和关键字的语法声明,所述语法声明中包括按照Json格式提取Json数据的实现;
将对所述Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。
2.根据权利要求1所述的方法,所述基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑,包括:
基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树;所述语法查询树中至少一个节点的实现包括按照Json格式提取Json数据;
根据所述处理指令中的符号或关键字遍历查询语法树,生成对所述Json数据的处理逻辑。
3.根据权利要求2所述的方法,所述查询语法树基于开源语法分析器antlr4生成,所述查询语法树的遍历采用antlr4的访问者visitor模式。
4.根据权利要求2所述的方法,所述基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树,包括:当缓存中不存在所述处理指令的查询语法树时,基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树并存储在缓存中。
5.根据权利要求1所述的方法,所述按照Json格式提取Json数据由信息抽取类库Jsonpath实现。
6.根据权利要求1所述的方法,所述对Json数据的处理逻辑运行结果为Json格式的数据。
7.根据权利要求1所述的方法,所述处理指令为结构化查询语言SQL语句。
8.一种结构化日志数据的加工装置,所述结构化日志数据为Java脚本对象表示法Json格式的数据,所述装置包括:
输入接收单元,用于接收处理指令和待加工的Json数据;所述处理指令包括用来表达数据加工方式的符号或关键字;
处理逻辑单元,用于基于预置符号集的语法规则和语法声明进行所述处理指令的解析,生成对所述Json数据的处理逻辑;所述预置符号集中包括语法规则和所述处理指令的符号和关键字的语法声明,所述语法声明中包括按照Json格式提取Json数据的实现;
结果输出单元,用于将对所述Json数据的处理逻辑运行结果作为加工后的日志数据,用于进行数据挖掘。
9.根据权利要求8所述的装置,所述处理逻辑单元包括:
查询语法树子单元,用于基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树;所述语法查询树中至少一个节点的实现包括按照Json格式提取Json数据;
语法树遍历子单元,用于根据所述处理指令中的符号或关键字遍历查询语法树,生成对所述Json数据的处理逻辑。
10.根据权利要求9所述的装置,所述查询语法树基于开源语法分析器antlr4生成,所述查询语法树的遍历采用antlr4的访问者visitor模式。
11.根据权利要求9所述的装置,所述处理逻辑单元具体用于:当缓存中不存在所述处理指令的查询语法树时,基于预置符号集中的语法声明,以符号和关键字为节点生成所述处理指令的查询语法树并存储在缓存中。
12.根据权利要求8所述的装置,所述按照Json格式提取Json数据由信息抽取类库Jsonpath实现。
13.根据权利要求8所述的装置,所述对Json数据的处理逻辑运行结果为Json格式的数据。
14.根据权利要求8所述的装置,所述处理指令为结构化查询语言SQL语句。
15.一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1到7任意一项所述的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1到7任意一项所述的步骤。
CN201910974331.8A 2019-10-14 2019-10-14 结构化日志数据的加工方法和装置 Pending CN110874350A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910974331.8A CN110874350A (zh) 2019-10-14 2019-10-14 结构化日志数据的加工方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910974331.8A CN110874350A (zh) 2019-10-14 2019-10-14 结构化日志数据的加工方法和装置

Publications (1)

Publication Number Publication Date
CN110874350A true CN110874350A (zh) 2020-03-10

Family

ID=69717854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910974331.8A Pending CN110874350A (zh) 2019-10-14 2019-10-14 结构化日志数据的加工方法和装置

Country Status (1)

Country Link
CN (1) CN110874350A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427893A (zh) * 2020-03-26 2020-07-17 中国平安财产保险股份有限公司 json数据存储方法、装置、计算机设备和存储介质
CN112416356A (zh) * 2020-11-12 2021-02-26 北京三快在线科技有限公司 Json字符串的处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593277A (zh) * 2012-08-15 2014-02-19 深圳市世纪光速信息技术有限公司 日志处理方法及系统
CN107622068A (zh) * 2016-07-14 2018-01-23 深圳联友科技有限公司 一种基于json格式的日志管理方法及装置
CN108694221A (zh) * 2017-04-12 2018-10-23 中国移动通信集团福建有限公司 数据实时分析方法、模块、设备和装置
CN110096513A (zh) * 2019-04-10 2019-08-06 阿里巴巴集团控股有限公司 一种数据查询、资金核对方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593277A (zh) * 2012-08-15 2014-02-19 深圳市世纪光速信息技术有限公司 日志处理方法及系统
CN107622068A (zh) * 2016-07-14 2018-01-23 深圳联友科技有限公司 一种基于json格式的日志管理方法及装置
CN108694221A (zh) * 2017-04-12 2018-10-23 中国移动通信集团福建有限公司 数据实时分析方法、模块、设备和装置
CN110096513A (zh) * 2019-04-10 2019-08-06 阿里巴巴集团控股有限公司 一种数据查询、资金核对方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
葛文帅: "业务导向的自定义大数据查询系统及其SQL解析器的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427893A (zh) * 2020-03-26 2020-07-17 中国平安财产保险股份有限公司 json数据存储方法、装置、计算机设备和存储介质
CN112416356A (zh) * 2020-11-12 2021-02-26 北京三快在线科技有限公司 Json字符串的处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN111708539B (zh) 一种应用程序代码转换方法、装置、电子设备和存储介质
US20180136914A1 (en) Programming Language with Extensions using a Strict Meta-Model
JP5123291B2 (ja) プログラミング言語における式ツリーの深い埋め込みのためのジェネリックインターフェイス
KR101213890B1 (ko) 강한 데이터 유형을 이용하여 소프트웨어 프로그램에서음성 인식 문법을 나타내기 위한 방법
US9753723B2 (en) Systems and methods for generating, linking, and presenting computer code representations from diverse sources
CN115981791A (zh) 系统交互方法、装置、设备及存储介质
CN112148281A (zh) 基于意图的机器编程
WO2021173208A1 (en) Detection of runtime errors using machine learning
CN116028028B (zh) 请求函数生成方法、装置、设备及存储介质
CN114153459A (zh) 接口文档生成方法及装置
CN110874350A (zh) 结构化日志数据的加工方法和装置
CN113608748B (zh) C语言转换Java语言的数据处理方法、装置及设备
US9524153B1 (en) Optimized compiling of a template function
CN113312373A (zh) 一种数据结构化查询语句的解析方法及设备
Cohl et al. Semantic preserving bijective mappings of mathematical formulae between document preparation systems and computer algebra systems
CN115374764A (zh) 一种基于用户故事的需求模型自动生成方法及系统
CN111831288B (zh) 一种自动生成Thrift IDL数据结构及自动转换函数的方法及系统
CN113343036B (zh) 基于关键拓扑结构分析的数据血缘关系解析方法和系统
CN117270962B (zh) 一种处理着色语言的方法、装置、存储介质及电子设备
CN117785213B (zh) 基于Rust开发的前端构建工具及构建方法
US11853732B1 (en) Source code structural inference based on indentation
Dai et al. Design of ART program language and interpreter based on Java
CN117435607A (zh) 用于数据库的语句转换方法、装置、设备和介质
CN116663528A (zh) 语言解析规则的生成方法和生成系统
CN116502632A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200310