CN116383235A - 一种数据处理方法、装置、设备及介质 - Google Patents
一种数据处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116383235A CN116383235A CN202310348711.7A CN202310348711A CN116383235A CN 116383235 A CN116383235 A CN 116383235A CN 202310348711 A CN202310348711 A CN 202310348711A CN 116383235 A CN116383235 A CN 116383235A
- Authority
- CN
- China
- Prior art keywords
- sql
- spark
- task
- hive
- engine
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 31
- 230000015654 memory Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 238000005457 optimization Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、设备及介质,在该方法中,获取用户输入的结构化查询语言SQL语句;判断所述SQL语句是否由Spark SQL引擎处理;如果是,采用所述Spark SQL引擎执行所述SQL语句的任务;如果否,采用Hive服务执行所述SQL语句的任务。在该方法中,将Hive与Spark SQL组合使用,保留了Hive服务功能的同时,可以使用Spark SQL的SQL语句执行能力,可以提升Hive的SQL语句执行性能。同时该方法可以兼容Hive SQL语法和Spark SQL语法,用户甚至可以不用修改任何SQL语句,就可以使用Spark SQL引擎。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、设备及介质。
背景技术
Spark是目前大数据分布式计算领域最常见、最热门的计算引擎,它完全基于内存进行任务计算,而不用像hadoop的MR一样将中间结果进行落盘,因此,计算性能大大获得了提升。它提供了多种计算算子,同时支持标准SQL,让开发者进行大数据编程时更加灵活、开发效率更高。Hive是一个基于Hadoop的数据仓库工具,提供了类似于关系数据库SQL的查询语言——HiveSQL,用户可以通过HiveSQL语句快速实现简单的MapReduce统计,Hive自身可以自动将HiveSQL语句快速转换成MapReduce任务进行运行。它主要由Hiveserver2和Hivemetastore两个服务组成。Hiveserver2主要用于接收Thrift客户端的基于Thrift协议的SQL语句请求,并实现了SQL语法解析、优化、生成计算引擎执行任务等功能。Hivemetastore服务主要用于保存当前Hive数仓中已经建立的库、表、字段等的元数据信息。
Hive on Spark是Hive社区开发的让Hive执行任务基于Spark计算引擎进行计算的一种任务执行模式,Hive侧(Hiveserver2)进行SQL语法解析、优化、生成执行任务等工作,Spark侧(Spark应用)仅根据Hive侧生成的执行任务进行计算。
目前Hive技术主要进行企业级使用,但是无论是Hive on MR还是Hive on Spark的性能,无法满足企业对SQL语句执行速度。
发明内容
本申请实施例提供了一种数据处理方法、装置、设备及介质,用以解决现有技术中Hive的使用无法满足企业对SQL语句执行速度的问题。
第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:
获取用户输入的结构化查询语言SQL语句;
判断所述SQL语句是否由Spark SQL引擎处理;
如果是,采用所述Spark SQL引擎执行所述SQL语句的任务;
如果否,采用Hive服务执行所述SQL语句的任务。
第二方面,本申请实施例提供了一种数据处理装置,所述装置包括:
获取模块,用于获取用户输入的结构化查询语言SQL语句;
判断模块,用于判断所述SQL语句是否由Spark SQL引擎处理;
第一执行模块,用于在所述判断模块的判断结果为是时,采用所述Spark SQL引擎执行所述SQL语句的任务;
第二执行模块,用于在所述判断模块的判断结果为否时,采用Hive服务执行所述SQL语句的任务。
第三方面,本申请实施例提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如上述任一项所述数据处理方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述数据处理方法的步骤。
在本申请实施例中,获取用户输入的结构化查询语言SQL语句;判断所述SQL语句是否由Spark SQL引擎处理;如果是,采用所述Spark SQL引擎执行所述SQL语句的任务;如果否,采用Hive服务执行所述SQL语句的任务。在该方法中,将Hive与Spark SQL组合使用,保留了Hive服务功能的同时,可以使用Spark SQL的SQL语句执行能力,可以提升Hive的SQL语句执行性能。同时该方法可以兼容Hive SQL语法和Spark SQL语法,用户甚至可以不用修改任何SQL语句,就可以使用Spark SQL引擎。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请的一些实施例提供的一种数据处理过程示意图;
图2为本申请的一些实施例提供的一种Hive on Spark的SQL语句执行流程示意图;
图3为本申请的一些实施例提供的一种Hive on Spark SQL的流程示意图;
图4为本申请的一些实施例提供的一种分流过程示意图;
图5为本申请的一些实施例提供的一种Spark SQL引擎的工作流程示意图;
图6为本申请的一些实施例提供的一种数据类型转换流程示意图;
图7为本申请的一些实施例提供的一种数据处理装置的结构示意图;
图8为本申请的一些实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的和实施方式更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
术语“模块”是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
为了便于说明,先对本申请实施例中涉及的术语进行说明。
1)Spark,目前大数据分布式计算领域的一种计算引擎,它基于内存进行任务计算,而不用像hadoop的映射归约(Map reduce,MR)一样将中间结果进行落盘,因此,Spark计算性能比MR有所提升。并且Spark提供了多种计算算子(多种计算组件),同时支持标准结构化查询语言(structured query language,SQL),可以提高开发者进行大数据编程时的灵活性和开发效率。
2)Spark SQL是Spark的一个模块,用于结构化数据处理(支持处理Hive中的数据)。使用SparkSQL的方式有很多种,包括SQL、数据框(DataFrame)应用程序编程接口(application programming interface,API)以及数据集(Dataset API)。Spark SQL提供的接口可以对用户基于SQL、DataFrame API以及Dataset API编写的代码进行解析、优化。Spark SQL目前无论使用何种API、何种语言,其执行引擎都是相同的,这种统一,有利于开发人员可以轻松地在不同的API之间来回切换,从而使数据处理更加地灵活。
3)Hive是一个基于Hadoop的数据仓库工具,提供了类似于关系数据库SQL的查询语言——HiveSQL,用户可以通过HiveSQL语句快速实现简单的MapReduce统计,Hive自身可以自动将HiveSQL语句快速转换成MapReduce任务进行运行。目前Hive包括Hiveserver2服务和Hive metastore服务。Hiveserver2可以用于接收Thrift客户端的基于Thrift协议的SQL语句请求,并可以实现SQL语法解析、优化、生成计算引擎执行任务等功能。Hivemetastore服务可以用于保存当前Hive数仓中已经建立的库、表、字段等的元数据信息。
4)Hive on Spark是Hive社区开发的让Hive执行任务基于Spark计算引擎进行计算的一种任务执行模式,Hive侧(Hiveserver2)可以进行SQL语法解析、优化、生成执行任务等工作,Spark侧(Spark应用)可以根据Hive侧生成的执行任务进行计算。
5)Spark ThriftServer是Spark社区提供的可以接收Java数据库连接(javadatabase connectivity,JDBC)请求的基于thrift协议的web服务,与Hiveserver2功能类似,但是相比于Hiveserver2缺少多租户、高并发以及权限控制等功能。
实施例1:
图1为本申请的一些实施例提供的一种处理过程示意图,该过程包括:
S101:获取用户输入的SQL语句。
本申请实施例提供的数据处理方法应用于电子设备,该电子设备用户设备(如手机、平板电脑、穿戴设备等)、或服务器等。
用户可以使用客户端,例如JDBC客户端,向电子设备提交SQL语句。可选地,电子设备上安装有该客户端。
一个可能的实现方式中,电子设备上安装有Hive服务,Hive服务可以获取到用户输入的SQL语句。示例的,Hive服务可以包括Hiveserver2,Hiveserver2获取到SQL语句后,可以对SQL语句进行另一种语言识别工具(another tool for language recognition,Antlr)解析、逻辑计划树转换、权限校验等一种或多种处理。
S102:判断SQL语句是否由Spark SQL引擎处理。如果是,执行S103,如果否,执行S104。
该步骤用于进行Hive SQL和Spark SQL语法兼容性判断,然后根据判断结果进行分流,选择相应的处理逻辑进行处理。该步骤可以由电子设备中的“分流器”组件实现,“分流器”组件可以可选地部署在Hive服务(如Hiveserver2)中。
电子设备中可以保存一种或多种分流规则,来判断SQL语句是否Spark SQL引擎处理。示例的,SQL语句的任务可以包括计算任务和非计算任务,一般的非计算任务可以在Hive侧完成,而不通过Spark SQL引擎处理,对于非计算任务可以通过Hive服务执行;对于计算任务来说,一些计算任务可以由Hive服务执行,一些计算任务可以由Spark SQL引擎执行,即在该示例中,可以针对计算任务进行分流。
S103:采用Spark SQL引擎执行SQL语句的任务。
Spark SQL引擎可以部署在电子设备中,或者部署在其它电子设备中,本申请实施例中以Spark SQL引擎部署在电子设备中为例进行说明。
在该步骤中Spark SQL引擎可以直接执行其能够识别的SQL语句,也可以执行对该SQL语句封装得到的对象。Spark SQL引擎执行SQL的具体过程可以参见后续实施例,在本申请实施例中可以发挥Spark SQL的SQL语句执行能力,来提升Hive的SQL语句执行性能。
S104:采用Hive服务执行SQL语句的任务。
Hive服务可以通过物理计划组件实现SQL语句任务的执行。
相关技术中Hive on Spark的SQL语句执行流程如图2所示,首先用户使用JDBC客户端向Hiveserver2提交SQL语句。Hiveserver2接收到SQL语句后依次进行Antlr解析、逻辑计划树转换、权限校验、逻辑计划优化、物理计划(即执行任务)转换等动作,然后会判断是否已经启动了Spark应用,如果没有启动,则启动一个新的Spark应用;如果已经启动,则复用该Spark应用。该Spark应用主要负责接收刚才Hiveserver2生成的执行任务,并调用Spark弹性分布式数据集(resilient distributed datasets,RDD)相关API,进行任务计算。任务计算结束后,将计算结果返回给Hiveserver2,并最终返回给用户。
图3为本申请实施例提供的一种Hive与Spark SQL进行结合,即做到Hive onSpark SQL的流程示意图,相当于在图2所示流程的基础上增加了Spark SQL的处理逻辑,并可以将Spark SQL的处理结果进行适配转换,这样才能返回给Hiveserver2。具体流程包括如下过程:用户使用JDBC客户端向Hiveserver2提交SQL语句后,Hiveserver2对SQL语句进行Antlr解析、逻辑计划树转换、权限校验等动作后,会进入一个“分流器”组件,该分流器主要的作用是做Hive SQL和Spark SQL语法兼容性判断,然后根据判断结果选择合适的处理逻辑去做处理。如果确定采用Spark SQL引擎进行处理,则由Spark SQL引擎执行SQL语句的任务。如果确定采用Hive服务进行处理,则由Hiveserver2执行SQL语句的任务。
在该实施例中,将Hive与Spark SQL组合使用,保留了Hive服务功能的同时,可以使用Spark SQL的SQL语句执行能力,可以提升Hive的SQL语句执行性能。同时该方法可以兼容Hive SQL语法和Spark SQL语法,用户甚至可以不用修改任何SQL语句,就可以使用SparkSQL引擎。在Hive服务包括Hiveserver2的情况下,本申请实施例中既保留了Hiveserver2多租户、高并发、权限校验等优秀功能,又发挥了Spark SQL卓越的SQL语句执行能力,可以大幅提升Hive的SQL语句执行性能。
实施例2:
在上述实施例的基础上,本申请实施例中,判断SQL语句是否由Spark SQL引擎处理包括:
判断SQL语句是否为数据定义语言(data definition language,DDL)类型语句;
如果是,确定SQL语句不由Spark SQL引擎处理;
如果否,确定SQL语句由Spark SQL引擎处理。
一般的,DDL类型的SQL语句一般用于对数据库进行操作和/或对数据表进行操作,这些操作无需运行计算任务,能够实现访问Hive metastore元数据服务即可。这部分操作可以采用原Hive on Spark处理逻辑实现(如上述图2所示的处理流程),因此这些语句在Hive侧即可执行。
示例的,数据库进行操作的SQL语句可以是“show databases”的DDL类型语句,对数据表进行操作的SQL语句可以是“create table”的DDL类型语句。
在本申请实施例中,对于DDL类型的SQL语句,可以采用Hive服务执行任务,实现在将Hive与Spark SQL组合使用的基础上,保留Hive侧的语句执行功能。
实施例3:
在上述各实施例的基础上,本申请实施例中,判断SQL语句是否由Spark SQL引擎处理包括:
判断SQL语句是否为Spark SQL不支持的Hive SQL语法;
如果是,确定SQL语句不由Spark SQL引擎处理;
如果否,确定SQL语句由Spark SQL引擎处理。
目前Spark SQL引擎支持大部分的Hive SQL语法,但是还存在少量的不支持的语法。当SQL语句使用了Spark SQL引擎不支持的语法时,可以采用原Hive on Spark处理逻辑实现(如上述图2所示的处理流程),在Hive侧即可执行。
示例的,SQL语句包括OFFSET语法,Spark SQL引擎不支持OFFSET语法,该SQL语句可以再Hive侧执行。
下面以一个具体的实施例对分流过程进行说明,参见图4,Hiveserver2中的“分流器”组件接收到SQL语句,采用分流规则进行分流判断。在该分流器中保存了分流规则一和分流规则二,分流规则一中当SQL语句是DDL类型的语句时,转到原Hive on Spark处理逻辑进行处理,分流规则二中加入了Spark SQL语法检测器,该检测器对SQL语句进行语法检测,当发现该SQL语句使用了Spark SQL不支持的语法时,转到原Hive on Spark处理逻辑进行处理。可选的,分流器中还可以将SQL语句封装为Spark SQL任务,然后输出给Spark SQL引擎,该封装过程参见下述实施例。
在本申请实施例中,对于Spark SQL引擎不支持的语法,可以采用Hive服务执行任务,实现在将Hive与Spark SQL组合使用的基础上,保留Hive侧的语句执行功能。
实施例4:
在上述各实施例的基础上,在本申请实施例中,采用Spark SQL引擎执行SQL语句的任务包括:
根据获取到的对象属性,将SQL语句封装为Spark SQL引擎能够识别的对象类型;
采用Spark SQL引擎执行对象类型对应的任务。
SQL语句经过语法分流,回分流到Spark SQL引擎,在执行SQL语句之前,可以先对SQL语句的任务进行封装,即将SQL语句封装为Spark SQL引擎能够识别的对象类型,这样可以同时兼容Hive SQL语法和Spark SQL语法,用户可以不用修改任何SQL语句,就可以使用Spark SQL引擎。
上述的对象属性包括以下一个或多个:访问的数据库信息、存放任务结果的数据表信息、或者任务结果的输出路径。其中,访问的数据库信息用于表示该SQL语句所访问的数据库信息。存放任务结果的数据表信息(下面简称结果表信息)用于指示在执行SQL语句后,向哪个数据插入任务结果。任务结果的输出路径(下面简称结果输出路径)用于指示在将任务结果返回给Hive服务之前,任务结果存放的临时路径,如果对任务结果进行了结果适配,则结果适配后的数据先存放在临时路径下,然后再返回给Hive服务。
一个实现方式中,将SQL语句进行封装,封装后的对象属性包括SQL语句、访问的数据库名(数据库信息的一个示例)、结果表信息、结果输出路径等,然后判断是否已经启动了Spark SQL应用,如果没有启动,则启动一个新的Spark SQL应用;如果已经启动,则复用该启动的Spark SQL应用。该Spark SQL应用获取执行任务,通过Spark SQL引擎进行SQL语句解析、优化等处理。
下面结合图5对Spark SQL引擎的工作流程进行说明,Spark SQL引擎接收SQL任务,对SQL任务进行Antlr解析,采用未解决的逻辑计划(Unresolved Logical Plan)组件访问hive metastore,确定SQL任务涉及的表名和字段名等信息是否与实际数据一致,如果一致,采用解析逻辑计划(Analyzed Logical Plan)组件进行缓存(Cache)复用,以及使用谓词下推、常量变换、列裁剪等优化规则进行规则优化,得到基于规则的优化方式(rule-based optimization,RBO),然后采用最优逻辑计划(Optimized Logical Plan)组件使用统计信息进行Join类型的选择进行逻辑优化,得到基于代价的优化方式(cost-basedoptimization,CBO),再然后采用Spark Plan组件根据转换规则(如填充算子)对优化后的逻辑计划进行转化,最后采用物理计划(Physical Plan)组件执行任务,将任务结果返回给Spark RDD。然后再调用Spark RDD相关的API进行任务计算,得到结果数据。
在本申请实施例中,将Hive与Spark SQL组合使用,利用Spark SQL的SQL语句执行能力,大幅提升了Hive的SQL语句执行性能。
实施例5:
在上述各实施例的基础上,在本申请实施例中,采用Spark SQL引擎执行SQL语句的任务之后,还包括:
获取Spark SQL引擎输出的任务结果,任务结果的数据类型包括行(Row)类型;
根据将任务结果的数据类型由Row类型转换为Hive服务对应的数据类型。
通常,Spark SQL引擎输出的任务结果的数据类型与Hive服务能够识别的数据类型不同,因此将Spark SQL引擎输出的任务结果的数据类型进行转换,可以保证Hive服务识别结果数据,并将结果数据返回给用户。
Spark SQL引擎输出的任务结果的数据类型包括Row类型,如图6所示,Spark SQL引擎输出的每行结果的数据类型是Spark的Row类型,结果适配器可以将Spark的Row类型转换为Hive服务能够识别的Hive类型,然后输出转换后的结果数据,Hive服务可以将识别并将转换后的结果数据返回给用户。
示例的,上述将任务结果的数据类型由Row类型转换为Hive服务对应的数据类型的过程可以包括:针对任务结果中的每一行数据,将该行数据中的每列数据的数据类型转换为Hive服务对应的数据类型。由于该行数据中每列数据的数据类型可能存在差异,因此将每列数据的数据类型分别转换成Hive服务对应的数据类型,可以使得Hive服务准确识别到每个数据。例如一行数据中包括一个城市的标识(ID)、气温、风向风力和湿度等多个信息,每个信息对应该行数据中的一列,每个信息的数据类型都要转换成Hive服务对应的数据类型,以便于Hive服务将准换后的结果数据准确地返回给用户。
在该实施例中,将Spark SQL引擎的处理结果进行适配转换,返回给Hive服务,由Hive服务返回给用户,实现Hive与Spark SQL的组合使用,提升了Hive的SQL语句执行性能。
实施例6:
基于相同的技术构思,在上述各实施例的基础上,本申请提供了一种数据处理装置,图7为本申请的一些实施例提供的一种数据处理装置结构示意图,如图7所示,该装置包括:
获取模块701,用于获取用户输入的结构化查询语言SQL语句;
判断模块702,用于判断SQL语句是否由Spark SQL引擎处理;
第一执行模块703,用于在判断模块702的判断结果为是时,采用Spark SQL引擎执行SQL语句的任务;
第二执行模块704,用于在判断模块702的判断结果为否时,采用Hive服务执行SQL语句的任务。
在一种可能的实施方式中,判断模块702,具体用于判断SQL语句是否为数据定义语言DDL类型语句;如果是,确定SQL语句不由Spark SQL引擎处理;如果否,确定SQL语句由Spark SQL引擎处理。
在一种可能的实施方式中,判断模块702,具体用于判断SQL语句是否为Spark SQL不支持的Hive SQL语法;如果是,确定SQL语句不由Spark SQL引擎处理;如果否,确定SQL语句由Spark SQL引擎处理。
在一种可能的实施方式中,第一执行模块703,具体用于根据获取到的对象属性,将SQL语句封装为Spark SQL引擎能够识别的对象类型;采用Spark SQL引擎执行对象类型对应的任务。
在一种可能的实施方式中,对象属性包括以下一个或多个:访问的数据库信息、存放任务结果的数据表信息、或者任务结果的输出路径。
在一种可能的实施方式中,装置还包括:
转换模块,用于获取Spark SQL引擎输出的任务结果,任务结果的数据类型包括行Row类型;根据将任务结果的数据类型由Row类型转换为Hive服务对应的数据类型。
在一种可能的实施方式中,转换模块,具体用于针对任务结果中的每一行数据,将行数据中的每列数据的数据类型转换为Hive服务对应的数据类型。
实施例7:
基于相同的技术构思,本申请还提供了一种电子设备,图8为本申请实施例提供的一种电子设备结构示意图,如图8所示,包括:处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信;
存储器803中存储有计算机程序,当程序被处理器801执行时,使得处理器801执行如下步骤:
获取用户输入的结构化查询语言SQL语句;
判断SQL语句是否由Spark SQL引擎处理;
如果是,采用Spark SQL引擎执行SQL语句的任务;
如果否,采用Hive服务执行SQL语句的任务。
在一种可能的实施方式中,处理器801,具体用于判断SQL语句是否为数据定义语言DDL类型语句;如果是,确定SQL语句不由Spark SQL引擎处理;如果否,确定SQL语句由Spark SQL引擎处理。
在一种可能的实施方式中,处理器801,具体用于判断SQL语句是否为Spark SQL不支持的Hive SQL语法;如果是,确定SQL语句不由Spark SQL引擎处理;如果否,确定SQL语句由Spark SQL引擎处理。
在一种可能的实施方式中,处理器801,具体用于根据获取到的对象属性,将SQL语句封装为Spark SQL引擎能够识别的对象类型;采用Spark SQL引擎执行对象类型对应的任务。
在一种可能的实施方式中,对象属性包括以下一个或多个:访问的数据库信息、存放任务结果的数据表信息、或者任务结果的输出路径。
在一种可能的实施方式中,处理器801,还用于获取Spark SQL引擎输出的任务结果,任务结果的数据类型包括行Row类型;根据将任务结果的数据类型由Row类型转换为Hive服务对应的数据类型。
在一种可能的实施方式中,处理器801,具体用于针对任务结果中的每一行数据,将行数据中的每列数据的数据类型转换为Hive服务对应的数据类型。
上述电子设备提到的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口802用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字指令处理器)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
实施例8:
基于相同的技术构思,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质内存储有可由电子设备执行的计算机程序,当程序在电子设备上运行时,使得电子设备执行时实现上述任一实施例。
具体的,获取用户输入的结构化查询语言SQL语句;
判断SQL语句是否由Spark SQL引擎处理;
如果是,采用Spark SQL引擎执行SQL语句的任务;
如果否,采用Hive服务执行SQL语句的任务。
在一种可能的实施方式中,判断SQL语句是否由Spark SQL引擎处理包括:
判断SQL语句是否为数据定义语言DDL类型语句;
如果是,确定SQL语句不由Spark SQL引擎处理;
如果否,确定SQL语句由Spark SQL引擎处理。
在一种可能的实施方式中,判断SQL语句是否由Spark SQL引擎处理包括:
判断SQL语句是否为Spark SQL不支持的Hive SQL语法;
如果是,确定SQL语句不由Spark SQL引擎处理;
如果否,确定SQL语句由Spark SQL引擎处理。
在一种可能的实施方式中,采用Spark SQL引擎执行SQL语句的任务包括:
根据获取到的对象属性,将SQL语句封装为Spark SQL引擎能够识别的对象类型;
采用Spark SQL引擎执行对象类型对应的任务。
在一种可能的实施方式中,对象属性包括以下一个或多个:访问的数据库信息、存放任务结果的数据表信息、或者任务结果的输出路径。
在一种可能的实施方式中,采用Spark SQL引擎执行SQL语句的任务之后,还包括:
获取Spark SQL引擎输出的任务结果,任务结果的数据类型包括行Row类型;
根据将任务结果的数据类型由Row类型转换为Hive服务对应的数据类型。
在一种可能的实施方式中,将任务结果的数据类型由Row类型转换为Hive服务对应的数据类型包括:
针对任务结果中的每一行数据,将行数据中的每列数据的数据类型转换为Hive服务对应的数据类型。
上述计算机可读存储介质可以是电子设备中的处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器如软盘、硬盘、磁带、MO(磁光盘)等、光学存储器如CD、DVD、BD、HVD等、以及半导体存储器如ROM、EPROM、EEPROM、NAND FLASH(非易失性存储器)、SSD(固态硬盘)等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
获取用户输入的结构化查询语言SQL语句;
判断所述SQL语句是否由Spark SQL引擎处理;
如果是,采用所述Spark SQL引擎执行所述SQL语句的任务;
如果否,采用Hive服务执行所述SQL语句的任务。
2.如权利要求1所述的方法,其特征在于,所述判断所述SQL语句是否由Spark SQL引擎处理包括:
判断所述SQL语句是否为数据定义语言DDL类型语句;
如果是,确定所述SQL语句不由所述Spark SQL引擎处理;
如果否,确定所述SQL语句由所述Spark SQL引擎处理。
3.如权利要求1所述的方法,其特征在于,所述判断所述SQL语句是否由Spark SQL引擎处理包括:
判断所述SQL语句是否为Spark SQL不支持的Hive SQL语法;
如果是,确定所述SQL语句不由所述Spark SQL引擎处理;
如果否,确定所述SQL语句由所述Spark SQL引擎处理。
4.如权利要求1-3任一项所述的方法,其特征在于,所述采用所述Spark SQL引擎执行所述SQL语句的任务包括:
根据获取到的对象属性,将所述SQL语句封装为所述Spark SQL引擎能够识别的对象类型;
采用所述Spark SQL引擎执行所述对象类型对应的任务。
5.如权利要求4所述的方法,其特征在于,所述对象属性包括以下一个或多个:访问的数据库信息、存放任务结果的数据表信息、或者任务结果的输出路径。
6.如权利要求1所述的方法,其特征在于,所述采用所述Spark SQL引擎执行所述SQL语句的任务之后,还包括:
获取所述Spark SQL引擎输出的任务结果,所述任务结果的数据类型包括行Row类型;
根据将任务结果的数据类型由所述Row类型转换为所述Hive服务对应的数据类型。
7.如权利要求6所述的方法,其特征在于,所述将任务结果的数据类型由所述Row类型转换为所述Hive服务对应的数据类型包括:
针对所述任务结果中的每一行数据,将所述行数据中的每列数据的数据类型转换为所述Hive服务对应的数据类型。
8.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取用户输入的结构化查询语言SQL语句;
判断模块,用于判断所述SQL语句是否由Spark SQL引擎处理;
第一执行模块,用于在所述判断模块的判断结果为是时,采用所述Spark SQL引擎执行所述SQL语句的任务;
第二执行模块,用于在所述判断模块的判断结果为否时,采用Hive服务执行所述SQL语句的任务。
9.一种电子设备,其特征在于,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7任一项所述的数据处理方法的步骤。
10.一种计算机存储介质,其特征在于,其存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行权利要求1-7任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310348711.7A CN116383235A (zh) | 2023-03-29 | 2023-03-29 | 一种数据处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310348711.7A CN116383235A (zh) | 2023-03-29 | 2023-03-29 | 一种数据处理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116383235A true CN116383235A (zh) | 2023-07-04 |
Family
ID=86976362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310348711.7A Pending CN116383235A (zh) | 2023-03-29 | 2023-03-29 | 一种数据处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116383235A (zh) |
-
2023
- 2023-03-29 CN CN202310348711.7A patent/CN116383235A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704037B (zh) | 一种规则引擎实现方法及装置 | |
US9141678B2 (en) | Distributed query cache in a database system | |
US10394694B2 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
US9659108B2 (en) | Pluggable architecture for embedding analytics in clustered in-memory databases | |
US9916368B2 (en) | Non-exclusionary search within in-memory databases | |
US10324710B2 (en) | Indicating a trait of a continuous delivery pipeline | |
US10620925B2 (en) | Code generation for queries in a database system | |
CN106293891B (zh) | 多维投资指标监督方法 | |
US20160063107A1 (en) | Data retrieval via a telecommunication network | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
CN116610568A (zh) | 一种识别代码的依赖关系的方法、装置、设备及介质 | |
KR101772333B1 (ko) | 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템 | |
CN116775716A (zh) | 数据查询方法、装置、存储介质及电子设备 | |
CN112491943A (zh) | 数据请求方法、装置、存储介质和电子设备 | |
CN116383235A (zh) | 一种数据处理方法、装置、设备及介质 | |
US11645283B2 (en) | Predictive query processing | |
CN112699129A (zh) | 一种数据处理系统、方法及装置 | |
CN113064914A (zh) | 数据提取方法及装置 | |
CN112749189A (zh) | 数据查询方法及装置 | |
EP2990960A1 (en) | Data retrieval via a telecommunication network | |
CN111858616A (zh) | 流式数据存储方法及装置 | |
CN117056316B (zh) | 一种多源异构数据关联查询加速方法、装置及设备 | |
CN113687973B (zh) | 一种日志动态化输出的控制方法、设备及介质 | |
CN116795843A (zh) | 一种基于预处理组件的报表计算方法、装置、设备及介质 | |
CN117708136A (zh) | Spark SQL的处理方法、装置、存储介质和系统 |
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 |