实时流处理方法、设备、数据处理设备及介质与流程

文档序号:18331582发布日期:2019-08-03 12:20阅读:112来源:国知局
本发明涉及实时流处理技术,尤其涉及实时流处理方法、设备、数据处理设备及介质。
背景技术
::随着大数据、实时处理(例如实时计算)的发展,各种实时处理大数据技术层出不穷,比如storm、spark和flink等各种实时流处理引擎。这些实时流处理引擎的编程接口各有不同,用户需要付出非常大的学习成本才能熟悉和使用。由此,为了使得用户易于开发和处理实时流处理任务,需要一种简单、有效、通用的实时流处理方案。技术实现要素:为了解决以上问题之一,本发明提供了一种实时流处理方法、设备、数据处理设备及介质。针对
背景技术
:中描述的问题,本发明考虑采用一种跨语言的通用的标准数据处理接口而不是使用上述的各不相同的实时流处理引擎编程接口来处理实时流处理任务。由此,本发明提出一种比较通用的实时流处理工具。根据本发明的一个示例性实施例,提供一种实时流处理方法,包括:接收用户提供的按照特定的原语规则编写的标准数据处理语句;通过语法解析器来解析所述标准数据处理语句,得到输入配置、输出配置以及加工配置;以及基于所述输入配置、输出配置以及加工配置,生成实时流处理任务。可选地,上述的实时流处理方法还包括:通过将生成的实时流处理任务发布到集群上,由集群启动该实时流处理任务并执行。可选地,通过语法解析器解析用户提供的标准数据处理语句,得到解析文件,利用该解析文件,将所述标准数据处理语句转换成抽象语法树,以得到输入配置、输出配置以及加工配置。可选地,所述标准数据处理语句包括结构化查询语言sql语句。可选地,所述原语规则包括:1)用于定义关于输入配置的字段结构、数据源类型、访问方式的信息;2)用于定义关于输出配置的字段结构、数据源类型、访问方式的信息;3)用于定义关于加工配置的数据处理过程的信息。根据本发明的一个示例性实施例,提供一种实时流处理设备,包括:接收装置,被配置用于接收用户提供的按照特定的原语规则编写的标准数据处理语句;语法解析器,被配置用于解析所述标准数据处理语句,得到输入配置、输出配置以及加工配置;以及任务生成装置,被配置用于基于所述输入配置、输出配置以及加工配置,生成实时流处理任务。可选地,上述实时流处理设备还包括:任务执行装置,被配置用于通过将生成的实时流处理任务发布到集群上,由集群启动该实时流处理任务并执行。可选地,语法解析器解析用户提供的标准数据处理语句,得到解析文件,利用该解析文件,将所述标准数据处理语句转换成抽象语法树,以得到输入配置、输出配置以及加工配置。可选地,所述标准数据处理语句包括结构化查询语言sql语句。可选地,所述原语规则包括:1)用于定义关于输入配置的字段结构、数据源类型、访问方式的信息;2)用于定义关于输出配置的字段结构、数据源类型、访问方式的信息;3)用于定义关于加工配置的数据处理过程的信息。根据本发明的一个示例性实施例,提供一种数据处理设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行上述方法之一。根据本发明的一个示例性实施例,提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被处理器执行时,使所述处理器执行上述方法之一。通过本发明,用户只需要使用通用的标准数据处理接口来编写语句,即可实现实时流实时流处理,由此使得本发明能够大大降低实时流处理任务的开发门槛。附图说明通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的附图标记通常代表相同部件。图1给出了根据本发明的一个示例性实施例的实时流处理方法的示意性流程图。图2给出了从sql语句解析成的抽象语法树的结构示意。图3示出了对于实时流处理的抽象定义所需的内容及其相关的更详细的配置。图4给出了根据本发明的一个示例性实施例的实时流处理设备的示意性框图。图5给出了根据本发明的另一个示例性实施例的实时流处理方法的示意性流程图。图6给出了根据本发明的另一个示例性实施例的实时流处理设备的示意性框图。图7给出了根据本发明的一个示例性实施例的数据处理设备的示意性框图。具体实施方式下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。这里需要说明的是,本申请中的数字、序号以及附图标记仅是为了方便描述而出现的,对于本发明的步骤、顺序等等均不构成任何限制,除非在说明书中明确指出了步骤的执行有特定的先后顺序。如
发明内容部分所述,本发明考虑采用一种跨语言的通用的标准数据处理接口而不是使用上述
背景技术
:中所述的各不相同的实时流处理引擎编程接口来处理实时流处理任务。由此,本发明提出一种比较通用的实时流处理工具。通过本发明,用户只需要使用通用的标准数据处理接口来编写语句,即可实现实时流处理,由此使得本发明能够大大降低实时流处理任务的开发门槛。例如,结构化查询语言sql(structuredquerylanguage)可以作为本发明可选的一种跨语言的通用的标准数据处理接口,因为它对于每个软件开发工程师来说几乎是必需的技能。但是,请注意,本发明并不仅限于使用sql语句,而是只要任何合适的跨语言的通用的标准数据处理接口都可以使用。为了容易理解和描述起见,下面将以sql语句为例来描述本发明。为了能够使用sql语句来编写实时流处理任务,本发明首先考虑到对常见的实时流处理进行抽象处理,即可以把实时流处理任务抽象成输入(input)、加工(process)、以及输出(output)这三个阶段。其中,加工(process)过程较为复杂,涉及到如何通过sql语句生成分布式处理任务。在本发明中,考虑采用大数据执行框架(如spark/flink等)来实现通过sql语句生成分布式处理任务的功能。由此,本发明基于输入(input)、加工(process)、以及输出(output)这三个阶段,定义一套sql原语规则,用户可以按照sql原语规则来直接简单地编写sql语句,然后可以使用sql解析器,将用户编写的sql语句解析成输入、加工、输出的抽象语法树,再按照大数据执行框架(如sparkstreaming、flink等)语法,将抽象语法树解析成具体的数据处理任务来执行。首先,例如,可以定义sql原语规则如下。比如,原语规则可以包括:1)用于定义关于输入配置的字段结构、数据源类型、访问方式的信息;2)用于定义关于输出配置的字段结构、数据源类型、访问方式的信息;以及3)用于定义关于加工配置的数据处理过程的信息。以sql语句为例,sql语句的原语规则可以如下所示。1)input:createinputtableinput_table_name(column1,column2)with(url=”xxx”,type=”kafka”)/*用于定义“输入”的原语规则*/该“输入”sql语句的原语规则的含义为:创建一张字段结构为column1,column2、数据源类型为kafka、访问方式为xxx的流表。该流表用于定义如何从实时流数据读取数据,比如定义用于读取实时流数据的访问方式、以及解析后的数据结构等。2)output:createoutputtableoutput_table_name(column1,column2)with(url=”xxx”,type=”hive”)/*定义“输出”的原语规则*/该“输出”sql语句的原语规则的含义为:创建一张字段结构为column1,column2、数据源类型为hive、访问方式为xxx的结果表。该结果表用于定义如何写入数据到下游存储,比如下游存储的访问方式、以及写入的数据结构等。3)process:insertintooutput_table_nameselect*frominput_table_name/*定义“加工”的原语规则*/该“加工”sql语句的原语规则的含义为:将流表input_table_name的数据插入到结果表output_table_name中。其中,“加工”sql语句中的数据处理过程的定义“select*frominput_table_name”是通过sparksql语法来实现的。该“加工”sql语句用于定义数据从流表读取后要如何转换才能写入下游存储。请注意,上述的原语规则仅是一个例子,本领域技术人员应当明白,本发明不应当被限制于上述例子。接下来,为了使得本发明更容易理解,下面将举出具体的示例性实施例来说明其实现过程。图1给出了根据本发明的一个示例性实施例的实时流处理方法的示意性流程图。如图1所示,在步骤s110,接收用户提供的按照特定的原语规则编写的标准通用数据处理语句(例如,按照特定的sql原语规则编写的sql语句)。然后,在步骤s120,通过语法解析器(例如sql解析器)来解析用户提供的上述语句,解析出输入配置(input)、输出配置(output)和加工配置(process)。这里,可以借助于例如开源的语法解析器antlr来解析语句(例如,sql语句),做词法、语法的解析,生成antlr解析文件(即,语法解析器antlr定义的规则文件,也就是sql原语规则的程序化表达),以解析出sql语句中的输入配置(input)、输出配置(output)和加工配置(process)。通过例如antlr解析文件,可以将用户的sql语句转换成图2所示的抽象语法树。其中,在图2所示的从左到右分别为“输入”(input)、“输出”(output)、和“加工”(process)的抽象语法树中,由sql语句中的片段的英文字词构成的各个分支是按照它们的相应的语法进行解析得到的。下面将对图2的各抽象语法树进行具体解释。1)“输入”(input)的抽象语法树表明上述的输入配置,即,一张字段为column1,column2、属性为url=xxx、type=kafka的流表input_table_name。2)“输出”(output)的抽象语法树表明上述的输出配置,即,一张字段为column1,column2、属性为url=xxx、type=kafka的结果表output_table_name。3)“加工”(process)的抽象语法树表明加工配置,即,要将所有可以通过sql语句“select*frominput_table_name”查询出来的数据都插入结果表output_table_name中。然后,在步骤s130,基于语法解析器生成的输入配置、输出配置以及加工配置,生成实时流处理任务。具体地,可以基于图2的输入配置、输出配置、以及加工配置,生成大数据处理任务(例如sparkstreaming任务)。例如,可以按照如下步骤进行:1)可以根据输入配置中的字段、属性、流表名,使用流框架的语法(例如sparkstreaming或flink等的语法)来定义流表;2)可以根据输出配置中的字段、属性、结果表名,使用流框架的语法(例如sparkstreaming或flink等的语法)来生成结果表;以及3)可以根据加工配置中的处理语句,生成实时流处理任务。由此可见,本发明采用一种跨语言的通用的标准数据处理接口而不是如现有技术那样使用各不相同的实时流处理引擎编程接口,来处理实时流处理任务。由此,本发明提供了一种比较通用且简单的实时流处理工具。通过本发明,用户只需要使用通用的标准数据处理接口来编写语句,即可实现实时流处理,由此使得本发明能够大大降低实时流处理任务的开发门槛。为了进一步便于理解,图3示出了对于实时流处理的抽象定义所需的相关配置,这些配置均是在用户输入的标准通用数据处理语句(例如sql语句等)中定义的。1)输入(input)配置:其中可以包括对于字段结构、数据流类型(例如,kafka、activemq、rocketmq等)、流表名等的定义。本发明中,可以基于输入配置,使用流框架语法(这里,流框架可以包括spark、flink、storm等)来生成流表,流表中的数据将在执行实时流处理任务时从实时流读取。2)加工(process)配置:其中包括用于定义如何处理实时流的处理语句。本发明中,可以根据加工配置中的处理语句,生成实时流处理任务,该实时流处理任务用于对流表中的数据按照加工配置中的处理语句进行处理,并将数据处理结果保存在下述的结果表中。3)输出(output)配置:与输入配置类似,其中可以包括对于字段结构、数据流类型(例如,kafka、activemq、rocketmq等)、结果表名等的定义。本发明中,可以根据加工配置中的处理语句,生成实时流处理任务,该实时流处理任务用于对流表中的数据,按照加工配置中的处理语句进行处理,并将数据处理结果保存在结果表中。图4给出了根据本发明的一个示例性实施例的实时流处理设备的示意性框图。如图4所示,实时流处理设备100可以包括接收装置110、语法解析器120、任务生成装置130。其中,接收装置110可以被配置用于接收用户提供的按照特定的原语规则编写的标准数据处理语句。语法解析器120可以被配置用于解析所述标准数据处理语句,得到输入配置、输出配置以及加工配置;以及任务生成装置130可以被配置用于基于所述输入配置、输出配置以及加工配置,生成实时流处理任务。这里,接收装置110、语法解析器120、任务生成装置130的操作与图1所示的步骤s110、s120、s130的操作类似,在此不再赘述。通过本发明,用户只需要使用通用的标准数据处理接口来编写语句,即可实现实时流处理,由此使得本发明能够大大降低实时流处理任务的开发门槛。图5给出了根据本发明的另一个示例性实施例的实时流处理方法的示意性流程图。其中,图5所示的步骤s210-s230与图1所示的步骤s110-s130类似,在此不再赘述。进一步地,还可以包括步骤s140,用于执行在步骤s230生成的实时流处理任务。例如,可以通过将生成的实时流处理任务发布到集群上,然后集群启动该实时流处理任务并执行。图6给出了根据本发明的另一个示例性实施例的实时流处理设备的示意性框图。如图6所示,实时流处理设备200可以包括接收装置210、语法解析器220、任务生成装置230、以及任务执行装置240。其中,图6所示的接收装置210、语法解析器220、任务生成装置230、以及任务执行装置240与图5所示的接收装置110、语法解析器120、任务生成装置130类似,在此不再赘述。另外,任务执行装置240可以被配置用于通过将生成的实时流处理任务发布到集群上,由集群启动该实时流处理任务并执行。这里,任务执行装置140的操作与图4所示的步骤s140的操作类似,在此不再赘述。通过本发明,用户只需要使用通用的标准数据处理接口来编写语句,即可实现实时流处理,由此使得本发明能够大大降低实时流处理任务的开发门槛。参见图7,数据处理设备1包括存储器10和处理器20。处理器20可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器20可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器20可以使用定制的电路实现,例如特定用途集成电路(asic,applicationspecificintegratedcircuit)或者现场可编程逻辑门阵列(fpga,fieldprogrammablegatearrays)。存储器10可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器20或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器10可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器10可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。存储器10上存储有可处理代码,当可处理代码被处理器20处理时,可以使处理器20执行上文述及的方法。此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。附图中的流程图和框图等等显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1