基于Spark的SQL程序的调试方法、装置、设备及存储介质与流程

文档序号:21973309发布日期:2020-08-25 19:04阅读:143来源:国知局
基于Spark的SQL程序的调试方法、装置、设备及存储介质与流程

本发明涉及软件开发技术领域,具体涉及一种基于spark的sql程序的调试方法、装置、设备及存储介质。



背景技术:

随着智能技术的发展,软件程序的研发也变得日益成熟。在软件程序研发的过程中,人人往往需要基于计算引擎进行开发。例如基于spark的软件开发。而基于spark的开发大多是基于sparksql的开发,在开发过程中需要对程序的正确性进行检测,往往通过执行开发者所写的程序来判断该sql程序是否有错。

在程序开发过程中开发者每次要写很长的sql程序语句,此种情况下极易出现语法错误,或者sql程序语句执行后所查询到的数据不准确。此时需要对sql程序语句进行调试。现有技术中,对sql程序语句调试通常是通过编译打包发送到集群上运行,以检测sql程序语句是否有误。若有误,开发者则进行修改,但每次修改了sql程序语句都需要重新打包发布到集群上运行,再次观察是否有语法报错或执行结果是否准确。如此一来,大量的时间浪费在了sql开发与打包调试上。如果通过开启thriftserver服务,则要长期占用集群资源,还不能支持spark内部注册的临时表。



技术实现要素:

有鉴于此,本发明的目的在于克服现有技术的不足,提供一种基于spark的sql程序的调试方法、装置、设备及存储介质。

为实现以上目的,本发明采用如下技术方案:

一种基于spark的sql程序的调试方法,包括:

获取用户发送的sql运行请求信息;所述sql运行请求信息包括待调试sql程序语句;

通过对应的预设sql调试接口调用对象运行所述待调试sql程序语句,得到运行结果;

通过所述预设sql调试接口将所述运行结果返回至接口调用者。

可选的,所述sql运行请求信息还包括:所需接口地址;

还包括:根据所述所需接口地址确定所述预设sql调试接口;所述预设sql调试接口为自定义的restful接口。

可选的,所述通过对应的预设sql调试接口调用对象运行所述待调试sql程序语句,得到运行结果,包括:

通过对应的所述restful接口调用sparksession对象;

所述sparksession对象运行所述待调试sql程序语句,得到所述运行结果。

可选的,还包括:

设定服务任务及对应的接口地址;所述服务任务包括sql运行服务;

存储所述服务任务及对应的所述接口地址;

发送所述服务任务至用户进行选择。

可选的,还包括:

接收用户选择的所述sql运行服务的指令,生成所述sql运行请求信息。

一种基于spark的sql程序的调试装置,包括:

信息获取模块,用于获取用户发送的sql运行请求信息;所述sql运行请求信息包括待调试sql程序语句;

运行模块,用于通过对应的预设sql调试接口调用对象运行所述待调试sql程序语句,得到运行结果;

结果返回模块,用于通过所述预设sql调试接口将所述运行结果返回至接口调用者。

可选的,所述sql运行请求信息还包括:所需接口地址;

还包括:所需接口确定模块,用于根据所述所需接口地址确定所述预设sql调试接口;所述预设sql调试接口为restful接口。

可选的,所述运行模块包括:

对象调用单元,用于通过对应的所述restful接口调用sparksession对象;

sql运行单元,用于所述sparksession对象运行所述待调试sql程序语句,得到所述运行结果。

一种基于spark的sql程序的调试设备,包括:

处理器,以及与所述处理器相连接的存储器;

所述存储器用于存储计算机程序,所述计算机程序至少用于执行上述所述的基于spark的sql程序的调试方法;

所述处理器用于调用并执行所述存储器中的所述计算机程序。

一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如上述所述的基于spark的sql程序的调试方法中各个步骤。

本申请提供的技术方案可以包括以下有益效果:

本申请公开一种基于spark的sql程序的调试方法,包括:获取用户发送的sql运行请求信息;sql运行请求信息包括待调试sql程序语句;通过对应预设sql调试接口调用对象运行待调试sql程序语句,得到运行结果;通过预设sql调试接口将运行结果返回至接口调用者。上述方法中当接收到用户的sql运行请求信息后,会调用预设sql调试接口,在对应的内部接口中调用对象运行待调试sql程序语句,得到运行结果,然后将运行结果返回至接口调用者,进而将结果反馈给用户,供用户参考进一步调试sql程序。此方法中无需依赖spark引擎外的集群进行sql调试,只需通过spark内置接口服务就能实现sql的调试,无需在sql调试的过程中一次又一次的打包发送sql语句,极大地提高了sql程序的调试效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的基于spark的sql程序的调试方法流程图;

图2是本发明另一实施例提供的基于spark的sql程序的调试方法流程图;

图3是本发明一实施例提供的基于spark的sql程序的调试装置模块图;

图4是本发明一实施例提供的基于spark的sql程序的调试设备结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。

现有技术中,在sparksql的开发过程中,往往是将sql语句固化到代码中,编译打包后提交到集群执行,该方法的优点是支持临时表与其他表(hive表等)的关联,缺点是每次都需要重新打包发布验证sql的正确性,浪费时间。

另外还可以通过thriftserver方式进行sql验证,该方式需提交一个任务长期放到集群上运行。优点是支持不同的sql语句,不需要打包发布。缺点是不支持sparkstreaming和spark临时表。

为解决现有技术中的sql调试问题,本申请提供一种基于spark的sql调试方式,详情如下。

图1是本发明一实施例提供的基于spark的sql程序的调试方法流程图。参见图1,一种基于spark的sql程序的调试方法,包括:

步骤101:获取用户发送的sql运行请求信息;sql运行请求信息包括待调试sql程序语句;

步骤102:通过对应的预设sql调试接口调用对象运行待调试sql程序语句,得到运行结果;预设sql调试接口为自主研发接口,为自定义接口,在这个接口服务上暴露sql调试的接口,如此一来,其他系统就可以通过调用该接口实现sql的在线调试功能。

步骤103:通过预设sql调试接口将运行结果返回至接口调用者。

在接收到用户发送的sql调试请求后,会通过对应的预设sql调试接口调用对象运行待调试sql程序语句,得到运行结果并将运行结果返回。该运行结果可能为程序运行结果,也可能为程序运行时的异常信息。当sql程序语句没有错误时,则运行结果为程序运行结果,当sql程序语句有误时,则显示异常信息。同时当sql程序语句存在逻辑问题时,同样会显示异常信息。

在sql运行请求信息中还包括:所需接口地址。根据所需接口地址确定预设sql调试接口;所述预设sql调试接口为restful接口。在用户请求进行sql调试时,发送的请求指令中会包含负责运行sql程序语句的对应的接口的地址。根据该接口地址能够直接调用对应的接口,然后该接口内部直接调用sparksql引擎完成sql计算任务,并将执行结果或错误的堆栈信息返回给调用者。

采用上述方法能够支持sparkstreaming,支持临时表,不需要修改代码,sql程序语句直接执行验证错误,无需再重复打包上传直至程序无误。节约了大量的sql开发与调试时间。

在上述实施例的基础上,本申请还公开了另外一种详细的调试方法的实施例,具体情况如下:

图2是本发明另一实施例提供的基于spark的sql程序的调试方法流程图。一种基于spark的sql程序的调试方法,包括:

步骤201:获取用户发送的sql运行请求信息;sql运行请求信息包括待调试sql程序语句;

步骤202:通过对应的restful接口调用sparksession对象;

步骤203:sparksession对象运行待调试sql程序语句,得到运行结果。

步骤204:通过restful接口将运行结果返回至接口调用者。

上述实施例中通过在driver端通过子线程启动一个restful接口服务,提供sql程序语句调试功能的接口。接口的入参是调用者开发的sql语句,在该接口内部,通过调用当前任务的sparksession对象,将sql程序语句执行,并将执行结果或异常信息通过restful接口返回给接口调用者,进而灵活的完成sql调试工作。

在上述实施例的基础上,还包括:

设定服务任务及对应的接口地址;所述服务任务包括sql运行服务;

存储所述服务任务及对应的所述接口地址;

发送所述服务任务至用户进行选择。

接收用户选择的所述sql运行服务的指令,生成所述sql运行请求信息。

本申请中,在spark的框架中预先设定接口对应的任务,即预先设定接口地址的任务,并将该任务及对应的接口地址存储在数据库中。当用户在spark中请求进行sql运行验证时,spark会提供多个任务选项供用户选择,当用户选择了sql验证选项后,spark会根据该任务确定对应的接口地址,进而调用该接口执行sql程序语句的运行验证。

上述实施例中通过接口调用的方式传递sql程序语句给正在运行的spark任务,通过内置restful接口服务实现sql程序语句的调试无需修改代码,无需重新打包发布,提供了sql程序语句的调试效率。

对应于本发明实施例提供的一种基于spark的sql程序的调试方法,本发明实施例还提供一种基于spark的sql程序的调试装置。请参见下文实施例。

图3是本发明一实施例提供的基于spark的sql程序的调试装置模块图。参见图3,一种基于spark的sql程序的调试装置,包括:

信息获取模块301,用于获取用户发送的sql运行请求信息;sql运行请求信息包括待调试sql程序语句;

运行模块302,用于通过对应的预设sql调试接口调用对象运行待调试sql程序语句,得到运行结果;

结果返回模块303,用于通过预设sql调试接口将运行结果返回至接口调用者。

其中,运行模块包括:

对象调用单元,用于通过对应的所述restful接口调用sparksession对象;

sql运行单元,用于所述sparksession对象运行所述待调试sql程序语句,得到所述运行结果。

在上述实施例的基础上,sql运行请求信息还包括:所需接口地址;

上述装置还包括:所需接口确定模块,用于根据所述所需接口地址确定所述预设sql调试接口;所述预设sql调试接口为自定义的restful接口。

上述装置中通过调用spark内部restful接口运行sql程序语句,得到运行结果,以此对sql程序语句进行调试,此装置无需将sql程序语句进行打包上传,无需依赖外部集群进行sql调试,节省了sql调试时间。

为了更清楚地介绍实现本发明实施例的硬件系统,对应于本发明实施例提供的一种基于spark的sql程序的调试方法,本发明实施例还提供一种基于spark的sql程序的调试设备。请参见下文实施例。

图4是本发明一实施例提供的基于spark的sql程序的调试设备结构图。参见图4,一种基于spark的sql程序的调试设备,包括:

处理,401,以及与所述处理器401相连接的存储器402;

存储器402用于存储计算机程序,计算机程序至少用于执行上述所述的基于spark的sql程序的调试方法;

处理器401用于调用并执行存储器402中的计算机程序。

采用上述设备可直接调用spark内部的restful接口进行sql语句运行,极大地节省了sql调试时间,提高了调试效率。

在上述基础上本申请还公开了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如上述所述的基于spark的sql程序的调试方法中各个步骤。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1