公开/公告号CN109460416A
专利类型发明专利
公开/公告日2019-03-12
原文格式PDF
申请/专利权人 成都四方伟业软件股份有限公司;
申请/专利号CN201811520657.5
申请日2018-12-12
分类号G06F16/242(20190101);
代理机构11371 北京超凡志成知识产权代理事务所(普通合伙);
代理人赵志远
地址 610000 四川省成都市高新区科园三路4号1栋2层
入库时间 2024-02-19 06:47:53
法律状态公告日
法律状态信息
法律状态
2020-02-04
授权
授权
2019-04-05
实质审查的生效 IPC(主分类):G06F16/242 申请日:20181212
实质审查的生效
2019-03-12
公开
公开
技术领域
本申请涉及计算机页面编译与运行的技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
Spark是一个基于内存计算的开源的集群计算系统,数据分析更加快速;在把传统的关系型数据库中的数据迁移到大数据环境里面的前提下,需要对数据进行分析。
目前对于数据库用户来说,数据库用户倾向于还是直接使用集成开发环境(专门开发面向Oracle数据库的应用Procedural Language/Structured Query Language,PLSQL)对数据进行分析和查询。而现在大数据应用开发过程中,传统的关系型数据库的结构化查询语言的特定函数在非关系型数据库里(例如列式存储的数据库Cassandra、Hadoop/HBase、Hypertable等),数据分析和数据存储能力是比较差的。针对PLSQL的特定函数上面,SparkSQL(Spark的一部分)没有这些特定函数的功能,不便于进行数据读取和分析。因此,现有技术中存在着传统的关系型数据库的结构化查询语言中的函数无法在非关系型数据库里使用的问题。
发明内容
有鉴于此,本申请提供一种数据处理方法、装置、电子设备及存储介质,用于解决现有技术中传统的关系型数据库的结构化查询语言中的函数无法在非关系型数据库里使用的问题。
本申请实施例提供了的一种数据处理方法,应用于电子设备,包括:接收用户终端发送的数据处理语句,所述数据处理语句包括预设函数;对所述数据处理语句进行解析,获得所述预设函数;根据预设函数与位置的对应关系,查找到与所述预设函数对应的功能实现函数的位置,所述功能实现函数用于实现所述预设函数的功能。
可选地,在本申请实施例中,在所述根据预设函数与位置的对应关系,查找到与所述预设函数对应的功能实现函数的位置之前,还包括:将所述功能实现函数加载至内存,获得所述功能实现函数在所述内存的位置;建立所述预设函数的函数名与所述功能实现函数的内存的位置的对应关系。
可选地,在本申请实施例中,在所述根据预设函数与位置的对应关系,查找到与所述预设函数对应的功能实现函数的位置之后,还包括:根据内存的位置执行所述功能实现函数,获得数据处理结果。
可选地,在本申请实施例中,在所述根据预设函数与位置的对应关系,查找到与所述预设函数对应的功能实现函数的位置之后,在所述根据内存的位置执行所述功能实现函数,获得数据处理结果之前,还包括:确定所述预设函数的函数名与所述功能实现函数的内存的位置建立有对应关系。
可选地,在本申请实施例中,所述根据预设函数与位置的对应关系,查找到与所述预设函数对应的功能实现函数的位置,包括:根据预设函数与内存位置的对应关系,查找到与所述预设函数对应的功能实现函数的内存位置。
本申请实施例还提供了一种数据处理装置,应用于电子设备,所述数据处理装置包括:处理语句接收模块,用于接收用户终端发送的数据处理语句,所述数据处理语句包括预设函数;预设函数获得模块,用于对所述数据处理语句进行解析,获得所述预设函数;函数位置查找模块,用于根据预设函数与位置的对应关系,查找到与所述预设函数对应的功能实现函数的位置,所述功能实现函数用于实现所述预设函数的功能。
可选地,在本申请实施例中,还包括:内存位置获得模块,用于将所述功能实现函数加载至内存,获得所述功能实现函数在所述内存的位置;对应关系建立模块,用于建立所述预设函数的函数名与所述功能实现函数的内存的位置的对应关系。
可选地,在本申请实施例中,还包括:对应关系确定模块,用于确定所述预设函数的函数名与所述功能实现函数的内存的位置建立有对应关系;处理结果获得模块,用于根据内存的位置执行所述功能实现函数,获得数据处理结果。
本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如上所述的方法。
本申请实施例还提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上所述的方法。
本申请提供一种数据处理方法、装置、电子设备及存储介质,通过接收用户终端发送的数据处理语句,数据处理语句包括预设函数;对数据处理语句进行解析,获得预设函数;根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置,该功能实现函数用于实现预设函数的功能,以使得该预设函数的具体功能在非关系型数据库得以实现。通过这种方式从而有效地解决了现有技术中传统的关系型数据库的结构化查询语言中的函数无法在非关系型数据库里使用的问题。
为使本申请的上述目的和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚的说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的电子设备结构示意图;
图2示出了本申请实施例提供的数据处理方法流程示意图;
图3示出了本申请实施例提供的数据处理方法步骤S110之前的流程示意图;
图4示出了本申请实施例提供的数据处理方法步骤S130之后的流程示意图;
图5示出了本申请实施例提供的数据处理方法的全部流程示意图;
图6示出了本申请实施例提供的数据处理装置结构示意图;
图7示出了本申请实施例提供的数据处理装置的其他模块结构示意图。
图标:100-数据处理装置;101-处理器;102-存储器;103-存储介质;109-电子设备;110-处理语句接收模块;120-预设函数获得模块;130-函数位置查找模块;140-内存位置获得模块;150-对应关系建立模块;160-对应关系确定模块;170-处理结果获得模块。
具体实施方式
本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,用于解决现有技术中传统的关系型数据库的结构化查询语言中的函数无法在非关系型数据库里使用的问题。其中,应用于电子设备的方法和装置是基于同一创造构思的,由于方法及相应的装置和设备解决问题的原理相似,因此方法及相应的装置和设备的实施可以相互参见,重复之处不再赘述。
以下将对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
Oracle数据库,又写为Oracle Database,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
Spark是一个基于内存计算的开源的集群计算系统,数据分析更加快速;在把oracle数据迁移到大数据环境里面的前提下,需要对数据进行分析。
Spark SQL是Spark大数据框架的一部分,支持使用标准SQL查询和HiveQL(另一种结构化查询语言)来读写数据,可用于结构化数据处理,并可以执行类似SQL的Spark数据查询,有助于开发人员更快地创建和运行Spark程序。
PL/SQL(有时简写为PLSQL,Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与其它编程语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
另外,需要理解的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或者暗示相对重要性,也不能理解为指示或者暗示顺序。
下面结合附图,对本申请实施例的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参见图1,图1示出了本申请实施例提供的电子设备结构示意图。本申请实施例提供了的一种电子设备109,包括:处理器101和存储器102,存储器102存储有处理器101可执行的机器可读指令,机器可读指令被处理器101执行时执行如下费用计算方法。
在具体的实施过程中,对卷积神经网络(Convolutional Neural Network,CNN)的相关计算可以用图形处理器(Graphics Processing Unit,GPU)进行加速,因此,该电子设备还可以包括图形处理器。此外,在使用分布式计算框架时需要使用通信接口,该电子设备还可以包括通讯与网络扩展卡、光纤卡或者多串口通信卡等部件,在此不再赘述。
请参见图1,本申请实施例提供了的一种存储介质103,该存储介质103上存储有计算机程序,该计算机程序被处理器101运行时执行如下费用计算方法。
本领域技术人员可以理解,图1中示出的电子设备的结构并不构成对该设备的限定,本申请实施例提供的设备可以包括比图示更多或者更少的部件,或者不同的部件布置。
第一实施例
请参见图2,图2示出了本申请实施例提供的数据处理方法流程示意图。本申请实施例提供了的一种数据处理方法,应用于电子设备,包括:
步骤S110:接收用户终端发送的数据处理语句,数据处理语句包括预设函数。
其中,用户终端发送的数据处理语句可以是标准的结构化查询语言,也可以不是标准的结构化查询语言,例如,可以包括PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL),具体地例如,listagg是PL/SQL的内置函数。因此,该用户终端发送的数据处理语句不应理解为对本申请实施例的限制。
步骤S120:对数据处理语句进行解析,获得预设函数。
其中,对数据处理语句进行解析,是指从数据处理语句分析出预设函数的过程。例如:数据处理语句为:select listagg(ename,',')within group(order by sal)namefrom emp;。那么获得的预设函数包括listagg函数。
步骤S130:根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置,功能实现函数用于实现预设函数的功能。
其中,在根据预设函数与位置的对应关系之前,需要建立预设函数与位置的对应关系,将功能实现函数加载至内存,获得功能实现函数在内存的位置,并建立预设函数的函数名与功能实现函数的内存的位置的对应关系。也就是说,需要将功能实现函数加载至内存,并将其与对应的预设函数注册在服务器上的数据库实例服务中,以便服务器上的数据库实例服务在启动的时候能够识别预设函数已经被注册,并执行对应的功能实现函数。
请参见图3,图3示出了本申请实施例提供的数据处理方法步骤S110之前的流程示意图。可选地,在本申请实施例中,在根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置之前,即在步骤S130之前,还包括:
步骤S90:将功能实现函数加载至内存,获得功能实现函数在内存的位置。
步骤S100:建立预设函数的函数名与功能实现函数的内存的位置的对应关系。
其中,需要将功能实现函数加载至内存,并将其与对应的预设函数注册在服务器上的数据库实例服务中,以便服务器上的数据库实例服务在启动的时候能够识别预设函数已经被注册,并执行对应的功能实现函数。
请参见图4,图4示出了本申请实施例提供的数据处理方法步骤S130之后的流程示意图。可选地,在本申请实施例中,在根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置之后,在根据内存的位置执行功能实现函数,获得数据处理结果之前,即在步骤S130之后及步骤S150之前,还包括:
步骤S140:确定预设函数的函数名与功能实现函数的内存的位置建立有对应关系。
可选地,在本申请实施例中,在根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置之后,还包括:
步骤S150:根据内存的位置执行功能实现函数,获得数据处理结果。
请参见图5,图5示出了本申请实施例提供的数据处理方法的全部流程示意图。可选地,在本申请实施例中,根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置,包括:
步骤S131:根据预设函数与内存位置的对应关系,查找到与预设函数对应的功能实现函数的内存位置。
其中,可以根据预设函数与内存位置的对应关系,也可以根据预设函数与硬盘所在位置的对应关系,来查找到与预设函数对应的功能实现函数的位置。因此,查找到与预设函数对应的功能实现函数的具体位置不应理解为对本申请实施例的限制。
为了便于理解,下面介绍本申请实施例提供的数据处理方法的另一种实施方式,本申请实施例提供的数据处理方法的另一种实施方式具体描述如下:
基于SparkSQL支持PL/SQL特定函数的方法主要步骤包括:
步骤S10:修改开源SparkSQL源码,实现PLSQL特定函数的功能和语法解析。
步骤S11:SparkSQL的内置函数是不支持PLSQL的内置函数的,例如listagg的PLSQL的内置函数在SparkSQL里面是不支持的。根据阅读SparkSQL源码可知,对于内置函数的解析和注册流程:
在sparksql语法解析之前需要listagg这个函数预先实现和注册到sparksql里面。
步骤S20:对语法解析后的语法树对象进行读取,获取到全部属性。
步骤S21:在实现listagg这个函数需要DeclarativeAggregate这个sparksql内置函数聚合表达式的抽象类。然后就能获取里面的各种属性,并且可以通过重写updateExpressions、mergeExpressions等这些抽象方法去实现listagg的PLSQL的功能。
步骤S30:根据PLSQL函数的功能使用SparkSQL内置函数实现的方式对PLSQL函数进行实现。
步骤S31:由于SparkSQL里面是没有PLSQL特定的函数,需要根据PLSQL函数的功能独立实现SparkSQL的内置函数。
步骤S32:所有需要实现PLSQL函数的SparkSQL的内置函数都需要需要实现Expression这个抽象类。来完成PLSQL函数的功能。
步骤S40:在SparkSQL内置函数注册的地方对PLSQL函数使用SparkSQL实现的函数进行注册(这样就能在服务启动之后,就能直接使用这个实现的功能函数,无须再次注册)。
步骤S41:实现了PLSQL函数功能之后,需要在FunctionRegistry接口里面对实现的函数进行注册,这样才能在服务启动之后直接使用这个函数。实现代码:expression[PlSqlListAggFunction]("listagg")
步骤S42:在实现了S30之后,就能使用select listagg(name)from emp这个plsql的语句(包含了PLSQL内置函数)在sparksql上面直接运行,就实现了SPARKSQL和PLSQL函数的对接。
步骤S50:在使用PLSQL语法对SparkSQL进行操作的时候,SparkSQL语法解析到PLSQL的函数,这样就能在SparkSQL内置函数里面找到实现功能函数,对需要处理的数据进行分析,返回需要的数据。
步骤S51:在实现了listagg这个PLSQL的内置函数功能之后,就可以使用PLSQL的内置函数对sparksql对接的数据源进行数据处理。
第二实施例
请参见图6,图6示出了本申请实施例提供的数据处理装置结构示意图。本申请实施例提供了的一种数据处理装置100,应用于电子设备109,数据处理装置100包括:
处理语句接收模块110,用于接收用户终端发送的数据处理语句,数据处理语句包括预设函数。
预设函数获得模块120,用于对数据处理语句进行解析,获得预设函数。
函数位置查找模块130,用于根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置,功能实现函数用于实现预设函数的功能。
请参见图7,图7示出了本申请实施例提供的数据处理装置的其他模块结构示意图。可选地,在本申请实施例中,数据处理装置还包括:
内存位置获得模块140,用于将功能实现函数加载至内存,获得功能实现函数在内存的位置。
对应关系建立模块150,用于建立预设函数的函数名与功能实现函数的内存的位置的对应关系。
请参见图7,可选地,在本申请实施例中,数据处理装置还包括:
对应关系确定模块160,用于确定预设函数的函数名与功能实现函数的内存的位置建立有对应关系。
处理结果获得模块170,用于根据内存的位置执行功能实现函数,获得数据处理结果。
本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,通过接收用户终端发送的数据处理语句,数据处理语句包括预设函数;对数据处理语句进行解析,获得预设函数;根据预设函数与位置的对应关系,查找到与预设函数对应的功能实现函数的位置,该功能实现函数用于实现预设函数的功能,以使得该预设函数的具体功能在非关系型数据库得以实现。通过这种方式从而有效地解决了现有技术中传统的关系型数据库的结构化查询语言中的函数无法在非关系型数据库里使用的问题。
以上仅为本申请实施例的优选实施例而已,并不用于限制本申请实施例,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
机译: 游戏数据处理方法和装置,以及存储介质和电子设备
机译: 数据处理方法和装置,电子设备和存储介质
机译: 数据处理方法和装置,以及电子设备和存储介质