本发明涉及大数据技术领域,尤其涉及一种基于大数据计算引擎的etl作业开发系统和计算机设备。
背景技术:
当前,海量的数据分析是非常常见的互联网业务场景,这些海量数据可能存储于离线数据源(如hdfs)或实时数据源(如kafka),在进行一些比较常见的数据etl(extract-transform-load,抽取-转换-加载)操作时需要将数据进行聚合、累加或者过滤,并写入外部存储系统比如hdfs、rds或kafka等。
开发人员会利用一些常见的大数据框架,如flink或spark等,然后结合具体的数据处理业务实现上述etl过程,这要求其必须非常熟悉flink或spark的api接口且熟悉一些常见的编程语言,如java或scala等,并且每个数据处理需求都要建立特定的项目,重复性劳动较多、开发流程较长,无法统一部署,这给开发和运维带来很大困难。
技术实现要素:
本申请实施例的目的在于提出一种基于大数据计算引擎的etl作业开发系统,以降低大数据处理过程中开发和运维的难度。
为了解决上述技术问题,本申请实施例提供一种基于大数据计算引擎的etl作业开发系统,采用了如下所述的技术方案:
所述基于大数据计算引擎的etl作业开发系统包括:
配置文件输入及解析子系统,用于输入待进行etl作业开发的配置文件,然后将所述配置文件进行解析,得到解析结果;
渲染及注册子系统,用于对所述解析结果进行渲染、动态编译,然后向大数据计算引擎进行注册;
执行子系统,用于调用所述注册后的大数据计算引擎进行etl作业开发。
进一步的,所述配置文件包括用户自定义的作业文件。
进一步的,所述作业文件通过语法解析工具进行解析,得到所述解析结果,所述解析结果包括作业指令。
进一步的,所述对所述解析结果进行渲染且动态编译的步骤包括:
读取预先定义好的渲染变量;
使用所述渲染变量对所述作业指令进行实时渲染。
进一步的,所述动态编译包括将所述渲染后的作业指令动态编译成所述大数据计算引擎的可执行指令。
进一步的,所述向大数据计算引擎进行注册包括调用所述大数据计算引擎的注册接口来执行所述可执行指令。
进一步的,所述作业系统还包括数据输入子系统,所述数据输入子系统用于将外部输入的作业数据输入到所述的大数据计算引擎。
进一步的,所述作业系统还包括数据输出子系统,所述数据输出子系统用于将所述的大数据计算引擎的计算结果输出到外部存储。
进一步的,所述作业系统还包括监控子系统,用于监控所述作业系统整个etl作业开发过程。
为解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现所述的基于大数据计算引擎的etl作业开发系统或各子系统的功能。
与现有技术相比,本申请实施例主要有以下有益效果:提供一种基于大数据计算引擎的etl作业开发系统,包括:配置文件输入及解析子系统,用于输入待进行etl作业开发的配置文件,然后将所述配置文件进行解析,得到解析结果;渲染及注册子系统,用于对所述解析结果进行渲染和动态编译,然后向大数据计算引擎进行注册;执行子系统,用于调用所述注册后的大数据计算引擎进行etl作业开发。采用配置式的开发方式和动态解析渲染etl作业指令,并结合大数据计算引擎形成分布式的大数据处理系统,可以减少重复性劳动、缩短开发流程,并降低了开发和运维的难度。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的一种基于大数据计算引擎的etl作业开发系统的结构示意图;
图2示出了根据本申请的实施例提供的一种计算机设备的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请的技术方案,首先说明下相关背景知识。其中,etl(extract-transform-load,抽取-转换-加载)是将业务系统的大量数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。etl是bi项目重要的一个环节。通常情况下,在bi项目中etl会花掉整个项目至少1/3的时间,etl设计的好坏直接关接到bi项目的成败。etl的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计etl的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ods(operationaldatastore,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高etl的运行效率。etl三个部分中,花费时间最长的是“t”(transform,清洗、转换)的部分,一般情况下这部分工作量是整个etl的2/3。数据的加载一般在数据清洗完了之后直接写入dw(datawarehousing,数据仓库)中去。
etl的实现有多种方法,常用的有三种。一种是借助etl工具(如oracle的owb、sqlserver2000的dts、sqlserver2005的ssis服务、大数据计算引擎等)实现,一种是sql方式实现,另外一种是etl工具和sql相结合。前两种方法各有各的优缺点,借助工具可以快速的建立起etl工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。sql的方法优点是灵活,提高etl运行效率,但是编码复杂,对技术要求比较高。第三种是综合了前面二种的优点,会极大地提高etl的开发速度和效率。
因此,本专利创新地提出一种基于大数据计算引擎的etl作业开发系统,以降低大数据处理过程中开发和运维的难度。下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,图1示出了根据本申请的基于大数据计算引擎的etl作业开发系统100的一个实施例的结构示意图。所述的基于大数据计算引擎的etl作业开发系统包括:
配置文件输入及解析子系统101,用于输入待进行etl作业开发的配置文件,然后将所述配置文件进行解析,得到解析结果;
渲染及注册子系统102,用于对所述解析结果进行渲染、动态编译,然后向大数据计算引擎进行注册;
执行子系统103,用于调用所述注册后的大数据计算引擎进行etl作业开发。
其中,上述配置文件包括用户自定义的作业文件,该作业文件可以是自定义的sql语句脚本,还可以是类sql语法的dsl文件,上述作业文件在系统运行时自动读取并解析和执行。上述dsl是领域特定语言,针对一个特定的领域,具有受限表达性的一种计算机程序语言,可以看做是一种抽象处理的方式。通过dsl来抽象构建模型、构建系统的功能,抽取公共的代码,减少重复的劳动,可以提高开发效率。dsl的处理一般包含以下几个步骤:定义dsl脚本文件、解析脚本文件得到语义模型、根据语义模型生成程序代码或者执行模型。
进一步的,上述作业文件通过语法解析工具进行解析,得到所述解析结果,该解析结果包括作业指令;上述语法解析工具可以是antlr或其他可以实现语法解析的工具,antlr包括词法分析器和语法分析器,它允许我们定义识别字符流的词法规则和用于解释字符流的语法分析规则。然后,antlr将依据用户提供的语法文件(如上述的dsl文件)自己主动生成对应的词法/语法分析器。用户能够利用antlr将输入的文本进行编译,并转换成其它形式,如ast(abstractsyntaxtree,抽象的语法树,即语义模型)或者其它计算机可以进一步解析和执行的数据操作指令,例如本实施例中的etl作业开发指令。使用dsl方便用户自定义etl作业开发文件,然后结合antlr进行dsl文件的解析,得到一系列的数据处理指令,无需用户掌握编程语言(如java或者scala等)即可快速进行etl作业开发开发的第一步,从而降低etl作业开发开发的难度。
进一步的,对上述解析结果进行渲染的步骤包括:
读取预先定义好的渲染变量;
使用所述渲染变量对所述作业指令进行实时渲染。
具体的,上述配置文件还包括变量渲染文件,该变量渲染文件用来预先定义渲染变量,如格式为-keyvalue(支持多个变量)的变量定义方法如下:
cmd_args=[
"/home/qboxserver/defy-log-dw-cdn-sla/_package/run.sh",
"-day{}".format(day),
"-hour{}".format(hour)]
其中,day和hour是预定义好的渲染变量。上述渲染变量在系统执行作业指令时被读取然后用来实时渲染上述dsl文件中引用的对应变量,如下面语句用<>引用的变量<day>和<hour>:createbatchinputlabelraw_logusingparquet(path="hdfs://cdnloghadoop/dw/summary/day=<day>/hour=<hour>")。通过上述实时变量渲染,可以在运行时改变或者指定参数,从而可以动态地生成作业指令,提高了系统的灵活性和复用性。
更进一步的,上述动态编译包括将所述渲染后的作业指令动态编译成所述大数据计算引擎的可执行指令,以适用于该大数据计算引擎;然后调用所述大数据计算引擎的注册接口来注册所述经过渲染和动态编译后的可执行指令,经过注册的可执行指令即可通过上述执行子系统调用上述大数据计算引擎来执行,从而进行相应的大数据etl作业开发并输出计算结果。
具体的,上述大数据计算引擎可以使用spark或flink,spark是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序,计算速度快;此外,spark提供了完整而强大的技术栈,包括sql查询、流式计算、机器学习和图算法组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算;spark运行模式多样,可运行于独立的集群模式中,或者运行云环境中,并且可以访问hdfs、hbase、hive等多种数据源。
结合上述spark的优点,本实施例的etl作业开发系统可以部署为分布式的大数据处理系统,即各子系统可以独立部署到不同的计算机设备上,降低了各子系统的耦合,从而提高了系统的稳定性,便于开发和运维。
此外,所述作业系统还包括数据输入子系统,所述数据输入子系统用于将外部输入的作业数据输入到所述的大数据计算引擎spark。所述作业系统还包括数据输出子系统,所述数据输出子系统用于将所述的大数据计算引擎spark的计算结果输出到外部存储。所述作业系统还包括监控子系统,用于监控所述作业系统整个etl作业开发过程,如判断数据的吞吐、延时等,并实时显示和预警,方便运维人员查看和定位。
需要说明的是,上述基于大数据计算引擎的etl作业开发系统的开发过程无需创建java/scala项目,采用配置化方式进行开发,开发人员无需掌握java/scala等编程语言,也无需理解spark或flink的api,只要会使用sql语法即可实现流式和批处理式的大数据处理。具体的,开发步骤如下:
流处理:流处理开发通常使用kafka(一种分布式消息系统),通过消费kafka的topic(主题),然后聚合topic的数据,不断把数据输出到外部系统(如hdfs,数据库),操作如下:
在defy-streaming目录下面新目录,代表创建一个新的流处理项目,需要改动的文件有:
job.dsl(即上述dsl文件,描述如何读取数据,转换数据,写入数据到外部系统的类sql语句集);
spark-submit.args(spark运行所需要的参数,包括设定executor_cores,executor_memory,executors等资源属性);
application.conf(包含defy-streaming工程的运行参数);
批处理:批处理任务通常读取hdfs上的文件,然后通过聚合等转换操作,最后把数据输出到外部系统(如hdfs,数据库),如下:
在defy-airflow目录下面创建新目录,代表创建一个新的批处理项目,需要改动的文件有:
job.dsl(dsl文件描述如何读取数据,转换数据,写入数据到外部系统的类sql语句集);
spark-submit.args(spark运行所需要的参数,包括设定executor_cores,executor_memory,executors等资源属性);
application.conf(包含defy-streaming工程的运行参数);
在airflow目录下面创建一个新的airflowdag,调度批处理项目,需要添加的文件为dag.py(驱动定义在defy-airflow目录下的defy-streaming工程)。
此外,还可以利用antlr来扩展大数据引擎spark/flink的sql语法,使该大数据引擎支持使用ddl创建流表维表、支持spark流计算的watermark语义定义和解析来扩展spark的streamingsql流处理功能。
应该理解的是,虽然附图的结构示意图中的各个子系统按照箭头的指示依次显示,但是这些子系统并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些子系统的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的结构示意图中的至少一部分子系统在执行时可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图2,图2为本实施例计算机设备2的基本结构框图。
所述计算机设备2包括通过系统总线相互通信连接存储器21、处理器22、网络接口23。需要指出的是,图中仅示出了具有组件21-23的计算机设备2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器21还可以既包括所述计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述计算机设备2的操作系统和各类应用软件,例如基于大数据计算引擎的etl作业开发系统的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述计算机设备2的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如上述基于大数据计算引擎的etl作业开发系统的程序代码。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述计算机设备2与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有上述基于大数据计算引擎的etl作业开发系统的相应程序,所述基于大数据计算引擎的etl作业开发系统程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于大数据计算引擎的etl作业开发系统的相应程序的步骤。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
1.一种基于大数据计算引擎的etl作业开发系统,其特征在于,包括:
配置文件输入及解析子系统,用于输入待进行etl作业开发的配置文件,然后将所述配置文件进行解析,得到解析结果;
渲染及注册子系统,用于对所述解析结果进行渲染和动态编译,然后向大数据计算引擎进行注册;
执行子系统,用于调用所述注册后的大数据计算引擎进行etl作业开发。
2.如权利要求1所述的etl作业开发系统,其特征在于,所述配置文件包括用户自定义的作业文件。
3.如权利要求2所述的etl作业开发系统,其特征在于,所述作业文件通过语法解析工具进行解析,得到所述解析结果,所述解析结果包括作业指令。
4.如权利要求3所述的etl作业开发系统,其特征在于,所述对所述解析结果进行渲染且动态编译的步骤包括:
读取预先定义好的渲染变量;
使用所述渲染变量对所述作业指令进行实时渲染。
5.如权利要求4所述的etl作业开发系统,其特征在于,所述动态编译包括将所述渲染后的作业指令动态编译成所述大数据计算引擎的可执行指令。
6.如权利要求5所述的etl作业开发系统,其特征在于,所述向大数据计算引擎进行注册包括调用所述大数据计算引擎的注册接口来执行所述可执行指令。
7.如权利要求1所述的etl作业开发系统,其特征在于,所述作业系统还包括数据输入子系统,所述数据输入子系统用于将外部输入的作业数据输入到所述的大数据计算引擎。
8.如权利要求7所述的etl作业开发系统,其特征在于,所述作业系统还包括数据输出子系统,所述数据输出子系统用于将所述的大数据计算引擎的计算结果输出到外部存储。
9.如权利要求1所述的etl作业开发系统,其特征在于,所述作业系统还包括监控子系统,用于监控所述作业系统整个etl作业开发过程。
10.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至9中任一项所述的基于大数据计算引擎的etl作业开发系统或各子系统的功能。
技术总结