CN110209567B - 一种性能测试方法及装置 - Google Patents
一种性能测试方法及装置 Download PDFInfo
- Publication number
- CN110209567B CN110209567B CN201810311272.1A CN201810311272A CN110209567B CN 110209567 B CN110209567 B CN 110209567B CN 201810311272 A CN201810311272 A CN 201810311272A CN 110209567 B CN110209567 B CN 110209567B
- Authority
- CN
- China
- Prior art keywords
- tasks
- task
- historical
- sql
- selecting
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- 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
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种性能测试方法及装置,该方法包括:从SQL执行的历史任务中选取部分历史任务;对部分历史任务进行分类,以获得M类任务,M类任务中的每类任务均包括至少一个任务,M为大于或等于2的整数;从M类任务中的每类任务中选取至少一个任务,以获得测试任务;执行测试任务。采用本发明实施例,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种性能测试方法及装置。
背景技术
Spark是专为大规模数据处理而设计的快速通用的计算引擎,Spark结构化查询语言(Structured Query Language,SQL)是Spark的一个组件,用于结构化数据的计算。SparkSQL提供了一个称为DataFrames的编程抽象,DataFrames可以充当分布式SQL查询引擎,因此,对Spark SQL分布式系统性能进行测试是一个非常重要的问题。目前,业界通过TPC(Transaction Processing Performance Council,事务处理性能委员会)指定的SQL任务及数据对Spark SQL分布式系统性能进行测试。上述方式中使用的SQL任务及数据是指定的,因此,只能针对特定SQL任务下的性能进行测试,而特定SQL任务覆盖范围小,以至无法对Spark SQL分布式系统的性能进行全面测试。
发明内容
本发明实施例提供一种性能测试方法及装置,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试。
本发明实施例第一方面提供了一种性能测试方法,包括:
从SQL执行的历史任务中选取部分历史任务;
对所述部分历史任务进行分类,以获得M类任务,所述M类任务中的每类任务均包括至少一个任务,所述M为大于或等于2的整数;
从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务;
执行所述测试任务。
在一个可能的实现方式中,所述从SQL的历史任务中选取部分任务包括:
获取SQL执行的全部历史任务;
统计第一任务中每个词的出现频率,所述第一任务为所述全部历史任务中的任一任务;
根据所述出现频率从所述全部历史任务中选取部分历史任务。
在一个可能的实现方式中,所述方法还包括:
根据词法和语法确定第二任务中关键词的出现频率、所述第二任务中的条件数量和所述第二任务所使用的表数量,所述第二任务是所述部分历史任务中的任一任务;
所述对所述部分历史任务进行分类,以获得M类任务包括:
根据所述出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务。
在一个可能的实现方式中,所述根据所述出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务包括:
根据所述出现频率、所述条件数量、所述表数量以及k最临近KNN分类算法,对所述部分历史任务进行分类,以获得M类任务。
在一个可能的实现方式中,所述方法还包括:
统计所述M类任务中的每类任务包括的任务数量;
所述从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务包括:
根据所述任务数量从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务。
在一个可能的实现方式中,所述方法还包括:
获取所述测试任务中每个任务所使用表的结构和数据;
所述执行所述测试任务包括:
根据所述结构和所述数据执行所述测试任务。
本发明实施例第二方面提供了一种性能测试装置,包括:
第一选取单元,用于从SQL执行的历史任务中选取部分历史任务;
分类单元,用于对所述第一选取单元选取的部分历史任务进行分类,以获得M类任务,所述M类任务中的每类任务均包括至少一个任务,所述M为大于或等于2的整数;
第二选取单元,用于从所述分类单元分类的M类任务中的每类任务中选取至少一个任务,以获得测试任务;
执行单元,用于执行所述第二选取单元获得的测试任务。
在一个可能的实现方式中,所述第一选取单元包括:
获取子单元,用于获取SQL执行的全部历史任务;
统计子单元,用于统计第一任务中每个词的出现频率,所述第一任务为所述获取子单元获取的全部历史任务中的任一任务;
选取子单元,用于根据所述统计子单元统计的出现频率从所述全部历史任务中选取部分历史任务。
在一个可能的实现方式中,所述装置还包括:
确定单元,用于根据词法和语法确定第二任务中关键词的出现频率、所述第二任务中的条件数量和所述第二任务所使用的表数量,所述第二任务是所述第一选取单元选取的部分历史任务中的任一任务;
所述分类单元,具体用于根据所述确定单元确定的出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务。
在一个可能的实现方式中,所述分类单元根据所述出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务包括:
根据所述出现频率、所述条件数量、所述表数量以及KNN分类算法,对所述部分历史任务进行分类,以获得M类任务。
在一个可能的实现方式中,所述装置还包括:
统计单元,用于统计所述分类单元分类的M类任务中的每类任务包括的任务数量;
所述第二选取单元,具体用于根据所述任务数量从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务。
在一个可能的实现方式中,所述装置还包括:
获取单元,用于获取所述第二选取单元获得的测试任务中每个任务所使用表的结构和数据;
所述执行单元,具体用于根据所述获取单元获取的结构和所述数据执行所述测试任务。
本发明实施例第三方面提供了一种性能测试装置,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行本发明实施例第一方面中的方法。
本发明实施例第四方面提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行本发明实施例第一方面中的方法。
本发明实施例中,从SQL执行的历史任务中选取部分历史任务;对选取的部分历史任务进行分类,以获得M类任务;从M类任务中的每类任务中选取至少一个任务,以获得测试任务;执行测试任务;由于不同种类的SQL历史任务涵盖了SQL任务中各个方面具有代表性的任务,因此,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试;此外,由于测试采用的SQL任务是SQL的历史任务,即真实的SQL任务,而不是通过虚拟得到的SQL任务,因此,可以提高Spark SQL分布式系统性能测试的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种性能测试方法的流程示意图;
图2是本发明实施例提供的另一种性能测试方法的流程示意图;
图3是本发明实施例提供的一种性能测试装置的结构示意图;
图4是本发明实施例提供的另一种性能测试装置的结构示意图;
图5是本发明实施例提供的又一种性能测试装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
还应当理解,在此本发明说明书中所使用的术语是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
请参见图1,图1是本发明实施例提供的一种性能测试方法的流程示意图。如图1所示,该性能测试方法可以包括以下步骤。
101,从SQL执行的历史任务中选取部分历史任务。
本实施例中,当需要对Spark SQL分布式系统进行性能测试时,将从Spark SQL执行过的任务,即历史任务中选取部分历史任务。可以先获取SQL执行的全部历史任务,全部历史任务可以是Spark SQL一段时间内执行过的全部任务,如一天、一周、一月等。
本实施例中,获取到SQL执行的全部历史任务之后,将统计第一任务中每个词的出现频率,第一任务为获取的全部历史任务中的任一任务。此处的词是任务中所有可能出现的词,可以是汉字组成的词,也可以是数字与汉字组成的词,也可以是英文字母组成的词,也可以是英文字母和符号组成的函数,还可以是由其他形式组成的词。例如:一个任务为“获取消费额度大于中1000元的用户信息”,将统计“获取”出现一次、“消费额度”出现一次、“大于”出现一次、“1000元”出现一次以及“用户信息”出现一次。统计任务中每个词的出现频率时,可以使用wordcount进行统计,如使用Spark运行scala实现wordcount,其代码如下:
va1 textFile=sc.textFile(“hdfs://…”)
va1 counts=textFile.flatMap(line=>line.split(“”))
.map(word=>(word,1))
.reduceByKey(_+_)
counts.saveAsTextFile(“hdfs://…”)
本实施例中,统计完全部历史任务中每个历史任务中每个词的出现频率之后,将根据每个词的出现频率从全部历史任务中选取部分历史任务,可以选取一个词出现频率高于预设次数的任务,也可以选取多个词分别大于不同预设次数的任务,还可以根据词的出现频率按照其他规则选取。一个实施例中,可以根据词的出现频率和词的出现数量从全部历史任务中选取部分历史任务。例如:一个任务包括5个词,每个词的出现频率均比较高,另一个任务中每个词的出现频率不高,但包括50个词,此时,可以从这两个任务中只选取一个任务,也可以两个都选,具体怎么选取需要根据设定的选取规则进行选取。
102、对部分历史任务进行分类以获得M类任务。
本实施例中,从SQL执行的历史任务中选取到部分历史任务之后,将对这部分历史任务进行分类得到M类任务,可以根据每个任务所属领域对这部分历史任务进行分类,也可以根据每个任务的等级对这部分历史任务进行分类,还可以根据每个任务的性质对这部分历史任务进行分类,还可以根据其它方式对这部分历史任务进行分类。其中,M类任务中的每类任务均包括至少一个任务,M为大于或等于2的整数。
103、从M类任务中的每类任务中选取至少一个任务以获得测试任务。
本实施例中,对选取的部分历史任务进行分类得到M类任务之后,将从M类任务中的每类任务中选取至少一个任务得到测试任务,可以是每类任务分别选取一个任务;也可以是每类任务分别选取两个任务;还可以是有的类任务选一个任务,有的类任务选两个任务;还可以以其它方式进行选取。
104、执行测试任务。
本实施例中,从M类任务中的每类任务中选取至少一个任务得到测试任务之后,将执行测试任务,可以将测试任务运行1小时、10小时、24小时等,之后查看Spark SQL的吞吐率。
在图1所描述的性能测试方法中,从SQL执行的历史任务中选取部分历史任务;对选取的部分历史任务进行分类以获得M类任务;从M类任务中的每类任务中选取至少一个任务,以获得测试任务;执行测试任务;由于不同种类的SQL历史任务涵盖了SQL任务中各个方面具有代表性的任务,因此,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试;此外,由于测试采用的SQL任务是SQL的历史任务,即真实的SQL任务,而不是通过虚拟得到的SQL任务,因此,可以提高Spark SQL分布式系统性能测试的准确性。
请参见图2,图2是本发明实施例提供的另一种性能测试方法的流程示意图。如图2所示,该性能测试方法可以包括以下步骤。
201,从SQL执行的历史任务中选取部分历史任务。
本实施例中,当需要对Spark SQL分布式系统进行性能测试时,将从Spark SQL执行过的任务,即历史任务中选取部分历史任务。可以先获取SQL执行的全部历史任务,全部历史任务可以是Spark SQL一段时间内执行过的全部任务,如一天、一周、一月等。
本实施例中,获取到SQL执行的全部历史任务之后,将统计第一任务中每个词的出现频率,第一任务为获取的全部历史任务中的任一任务。此处的词是任务中所有可能出现的词,可以是汉字组成的词,也可以是数字与汉字组成的词,也可以是英文字母组成的词,也可以是英文字母和符号组成的函数,还可以是由其他形式组成的词。例如:一个任务为“获取消费额度大于中1000元的用户信息”,将统计“获取”出现一次、“消费额度”出现一次、“大于”出现一次、“1000元”出现一次以及“用户信息”出现一次。统计任务中每个词的出现频率时,可以使用wordcount进行统计,如使用Spark运行scala实现wordcount,其代码如下:
va1 textFile=sc.textFile(“hdfs://…”)
va1 counts=textFile.flatMap(line=>line.split(“”))
.map(word=>(word,1))
.reduceByKey(_+_)
counts.saveAsTextFile(“hdfs://…”)
本实施例中,统计完全部历史任务中每个历史任务中每个词的出现频率之后,将根据每个词的出现频率从全部历史任务中选取部分历史任务,可以选取一个词出现频率高于预设次数的任务,也可以选取多个词分别大于不同预设次数的任务,还可以根据词的出现频率按照其他规则选取。一个实施例中,可以根据词的出现频率和词的出现数量从全部历史任务中选取部分历史任务。例如:一个任务包括5个词,每个词的出现频率均比较高,另一个任务中每个词的出现频率不高,但包括50个词,此时,可以从这两个任务中只选取一个任务,也可以两个都选,具体怎么选取需要根据设定的选取规则进行选取。
202、根据词法和语法确定第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量。
本实施例中,从SQL执行的历史任务中选取到部分历史任务之后,将根据词法和语法确定第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,第二任务是选取的部分历史任务中的任一任务。可以先根据词法和语法确定每个任务中出现的每个关键词、需要满足的条件、使用的表,之后通过统计可以得到每个关键词的出现频率、每个任务需要满足的条件数量以及每个任务所使用的表。其中,可以通过flex词法分析器和bison语法分析器快速地确定任务中关键词的出现频率、任务中的条件数量和任务所使用的表数量,使用flex词法分析器及其status特性,可以确定任务中关键词和任务中的条件数量的统计。例如:一个任务为“统计年龄大于30岁,身高大于1.6米的人”,该任务中包括两个条件“年龄大于30岁”和“身高大于1.6米”,可见,该任务的条件数量为2。其中,任务使用的表可以包括创建的表、选择的表、插入的表、更新的表等表。其中,词法除了使用flex词法分析器之外,也可以使用lex词法分析器,还可以使用yacc词法分析器,还可以使用其它词法分析器。
203、根据第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对部分历史任务进行分类以获得M类任务。
本实施例中,根据词法和语法确定出第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量之后,将根据第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对这部分历史任务进行分类得到M类任务,可以根据关键词的出现频率对这部分历史任务进行分类,之后根据任务中的条件数量和任务所使用的表数量对每类任务中的任务进行筛选,即删除不合格的任务,确保每类中的任务都是具有代表性的任务;也可以根据条件数量对这部分历史任务进行分类,再根据出现频率和表数量对每类任务中的任务进行筛选;还可以根据表数量对这部分历史任务进行分类,再根据出现频率和条件数量对每类任务中的任务进行筛选;还可以根据其它方式对这部分历史任务进行分类以及对每类任务进行筛选。一种实施方式中,可以根据第二任务中关键词的出现频率、第二任务中的条件数量、第二任务所使用的表数量以及k最邻近(k-NearsNeighbor,KNN)分类算法,对这部分历史任务进行快速分类。其中,分类算法除了KNN之外,还可以为决策树、朴素贝叶斯等算法。其中,M类任务中的每类任务均包括至少一个任务,M为大于或等于2的整数。
204、统计M类任务中的每类任务包括的任务数量。
205、根据任务数量从M类任务中的每类任务中选取至少一个任务,以获得测试任务。
本实施例中,统计出M类任务中的每类任务包括的任务数量之后,将根据M类任务中的每类任务包括的任务数量从M类任务中的每类任务中选取至少一个任务得到测试任务,可以根据M类任务中的每类任务包括的任务数量在所有任务中占据的比例确定从每类任务中选取的任务数量,这样可以保证测试任务是从M类任务中的每类任务中均匀的选取的。例如:总共分为5类,5类任务总共包括50个任务,第一类任务和第二类任务均包括5个任务、第三类任务包括10个任务,第四类任务和第五类任务包括15个任务,可以从第一类任务和第二类任务分别选取两个任务,可以从第三类任务选取四个任务,可以从第四类任务和第五类任务分别选取六个任务,总共选取20个任务作为测试任务,从M类任务中的每个种类中选取任务时,可以根据任务中关键词的出现频率、任务中的条件数量和任务使用的表数量中的至少一个因素进行选取。
206、获取测试任务中每个任务所使用表的结构和数据。
本实施例中,根据M类任务中的每类任务包括的任务数量从M类任务中的每类任务中选取得到测试任务之后,将获取测试任务中每个任务所使用表的结构和数据,由于在步骤202中已经确定了每个任务使用的表和数据,因此,可以直接获取测试任务中每个任务所使用表的结构和数据。为了减少不必要的建表和数据复制,此处可以仅获取选择表和插入表的表结构,以及仅选择表的数据,而不获取其他表的数据。
207、根据测试任务中每个任务所使用表的结构和数据执行测试任务。
本实施例中,获取到测试任务中每个任务所使用表的结构和数据之后,将根据测试任务中每个任务所使用表的结构和数据执行测试任务,可以将测试任务运行1小时、10小时、24小时等,之后查看Spark SQL的吞吐率。
在图2所描述的性能测试方法中,从SQL执行的历史任务中选取部分历史任务;根据词法和语法确定第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量;根据第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对部分历史任务进行分类以获得M类任务;统计M类任务中的每类任务包括的任务数量;根据M类任务中的每类任务包括的任务数量从M类任务中的每类任务中选取至少一个任务,以获得测试任务;获取测试任务中每个任务所使用表的结构和数据;根据测试任务中每个任务所使用表的结构和数据执行测试任务;由于不同种类的SQL历史任务涵盖了SQL任务中各个方面具有代表性的任务,因此,通过不同种类的SQL历史任务,可以对SparkSQL分布式系统的性能进行全面测试;此外,由于测试采用的SQL任务是SQL的历史任务,即真实的SQL任务,而不是通过虚拟得到的SQL任务,因此,可以提高Spark SQL分布式系统性能测试的准确性。
请参见图3,图3是本发明实施例提供的一种性能测试装置的结构示意图,如图3所示,该装置可以包括:
第一选取单元301,用于从SQL执行的历史任务中选取部分历史任务;
分类单元302,用于对第一选取单元301选取的部分历史任务进行分类,以获得M类任务,M类任务中的每类任务均包括至少一个任务,M为大于或等于2的整数;
第二选取单元303,用于从分类单元302分类的M类任务中的每类任务中选取至少一个任务,以获得测试任务;
执行单元304,用于执行第二选取单元303获得的测试任务。
其中,第一选取单元301,分类单元302、第二选取单元303和执行单元304的具体功能实现方式可以参见图1对应实施例中的步骤101-步骤104,在此不再赘述。
在图3所描述的性能测试装置中,从SQL执行的历史任务中选取部分历史任务;对选取的部分历史任务进行分类,以获得M类任务;从M类任务中的每类任务中选取至少一个任务,以获得测试任务;执行测试任务;由于不同种类的SQL历史任务涵盖了SQL任务中各个方面具有代表性的任务,因此,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试;此外,由于测试采用的SQL任务是SQL的历史任务,即真实的SQL任务,而不是通过虚拟得到的SQL任务,因此,可以提高Spark SQL分布式系统性能测试的准确性。
请参阅图4,图4是本发明实施例提供的另一种性能测试装置的结构示意图。其中,图4所示的装置是由图3所示的装置优化得到的。其中,第一选取单元301可以包括:
获取子单元3011,用于获取SQL执行的全部历史任务;
统计子单元3012,用于统计第一任务中每个词的出现频率,第一任务为获取子单元3011获取的全部历史任务中的任一任务;
选取子单元3013,用于根据统计子单元3012统计的出现频率从获取子单元3011获取得全部历史任务中选取部分历史任务。
作为一种可能的实施方式,该装置还可以包括:
确定单元305,用于根据词法和语法确定第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,第二任务是第一选取单元301选取的部分历史任务中的任一任务;
分类单元302,具体用于根据确定单元305确定的第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对第一选取单元选取301的部分历史任务进行分类,以获得M类任务。
作为一种可能的实施方式,分类单元302根据第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对部分历史任务进行分类,以获得M类任务包括:
根据第二任务中关键词的出现频率、第二任务中的条件数量、第二任务所使用的表数量以及KNN分类算法,对部分历史任务进行分类,以获得M类任务。
作为一种可能的实施方式,该装置还可以包括:
统计单元306,用于统计分类单元302分类的M类任务中的每类任务包括的任务数量;
第二选取单元303,具体用于根据统计单元306统计的任务数量从M类任务中的每类任务中选取至少一个任务,以获得测试任务。
作为一种可能的实施方式,该装置还可以包括:
获取单元307,用于获取第二选取单元303获得的测试任务中每个任务所使用表的结构和数据;
执行单元304,具体用于根据获取单元307获取的结构和数据执行第二获取单元303获取的测试任务。
其中,第一选取单元301,分类单元302、第二选取单元303、执行单元304、确定单元305、统计单元306和获取单元307的具体功能实现方式可以参见图2对应实施例中的步骤201-步骤207,在此不再赘述。
在图4所描述的性能测试装置中,从SQL执行的历史任务中选取部分历史任务;对选取的部分历史任务进行分类以获得M类任务;从M类任务中的每类任务中选取至少一个任务,以获得测试任务;执行测试任务;由于不同种类的SQL历史任务涵盖了SQL任务中各个方面具有代表性的任务,因此,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试;此外,由于测试采用的SQL任务是SQL的历史任务,即真实的SQL任务,而不是通过虚拟得到的SQL任务,因此,可以提高Spark SQL分布式系统性能测试的准确性。
请参见图5,图5是本发明实施例提供的又一种性能测试装置的结构示意图。如图5所示,该装置可以包括:至少一个处理器501和存储器502。上述处理器501与存储器502通过通信总线503连接。存储器502用于存储计算机程序,上述计算机程序包括程序指令,其中,处理器501用于执行存储器502存储的程序指令。
存储器502可以为高速RAM存储器,也可以为非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器502可选的还可以是至少一个位于远离前述处理器501的存储装置。而处理器501可以用于调用存储器502中存储的设备控制应用程序执行以下操作:
从SQL执行的历史任务中选取部分历史任务;
对部分历史任务进行分类,以获得M类任务,M类任务中的每类任务均包括至少一个任务,M为大于或等于2的整数;
从M类任务中的每类任务中选取至少一个任务,以获得测试任务;
执行测试任务。
作为一种可能的实施方式,处理器501从SQL的历史任务中选取部分任务包括:
获取SQL执行的全部历史任务;
统计第一任务中每个词的出现频率,第一任务为全部历史任务中的任一任务;
根据第一任务中每个词的出现频率从全部历史任务中选取部分历史任务。
作为一种可能的实施方式,处理器501还用于调用存储器502中存储的设备控制应用程序执行以下操作:
根据词法和语法确定第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,第二任务是部分历史任务中的任一任务;
处理器501对部分历史任务进行分类,以获得M类任务包括:
根据第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对部分历史任务进行分类,以获得M类任务。
作为一种可能的实施方式,处理器501根据第二任务中关键词的出现频率、第二任务中的条件数量和第二任务所使用的表数量,对部分历史任务进行分类,以获得M类任务包括:
根据第二任务中关键词的出现频率、第二任务中的条件数量、第二任务所使用的表数量以及KNN分类算法,对部分历史任务进行分类,以获得M类任务。
作为一种可能的实施方式,处理器501还用于调用存储器502中存储的设备控制应用程序执行以下操作:
统计M类任务中的每类任务包括的任务数量;
处理器501从M类任务中的每类任务中选取至少一个任务,以获得测试任务包括:
根据M类任务中的每类任务包括的任务数量从M类任务中的每类任务中选取至少一个任务,以获得测试任务。
作为一种可能的实施方式,处理器501还用于调用存储器502中存储的设备控制应用程序执行以下操作:
获取测试任务中每个任务所使用表的结构和数据;
处理器501执行测试任务包括:
根据测试任务中每个任务所使用表的结构和数据执行测试任务。
应当理解,本发明实施例中所描述的性能测试装置可执行图1和图2任一个所对应实施例中对性能测试方法的描述,也可执行前文图3和图4所对应实施例中对上述性能测试装置的描述,在此不再赘述。
在图5所描述的性能测试装置中,从SQL执行的历史任务中选取部分历史任务;对选取的部分历史任务进行分类以获得M类任务;从M类任务中的每类任务中选取至少一个任务,以获得测试任务;执行测试任务;由于不同种类的SQL历史任务涵盖了SQL任务中各个方面具有代表性的任务,因此,通过不同种类的SQL历史任务,可以对Spark SQL分布式系统的性能进行全面测试;此外,由于测试采用的SQL任务是SQL的历史任务,即真实的SQL任务,而不是通过虚拟得到的SQL任务,因此,可以提高Spark SQL分布式系统性能测试的准确性。
此外,这里需要指出的是:本发明实施例还提供了一种计算机存储介质,且上述计算机存储介质中存储有计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图1和图2任一个所对应实施例中对上述地图展示方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (9)
1.一种性能测试方法,其特征在于,包括:
从结构化查询语言SQL执行的历史任务中选取部分历史任务;
根据词法和语法确定第二任务中关键词的出现频率、所述第二任务中的条件数量和所述第二任务所使用的表数量,所述第二任务是所述部分历史任务中的任一任务;
根据所述出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务,所述M类任务中的每类任务均包括至少一个任务,所述M为大于或等于2的整数;
从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务;
执行所述测试任务。
2.根据权利要求1所述的方法,其特征在于,所述从结构化查询语言SQL执行的历史任务中选取部分任务包括:
获取SQL执行的全部历史任务;
统计第一任务中每个词的出现频率,所述第一任务为所述全部历史任务中的任一任务;
根据所述出现频率从所述全部历史任务中选取部分历史任务。
3.根据权利要求1所述的方法,其特征在于,所述根据所述出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务包括:
根据所述出现频率、所述条件数量、所述表数量以及k最临近KNN分类算法,对所述部分历史任务进行分类,以获得M类任务。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述M类任务中的每类任务包括的任务数量;
所述从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务包括:
根据所述任务数量从所述M类任务中的每类任务中选取至少一个任务,以获得测试任务。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
获取所述测试任务中每个任务所使用表的结构和数据;
所述执行所述测试任务包括:
根据所述结构和所述数据执行所述测试任务。
6.一种性能测试装置,其特征在于,包括:
第一选取单元,用于从SQL执行的历史任务中选取部分历史任务;
确定单元,用于根据词法和语法确定第二任务中关键词的出现频率、所述第二任务中的条件数量和所述第二任务所使用的表数量,所述第二任务是所述第一选取单元选取的部分历史任务中的任一任务;
分类单元,用于根据所述确定单元确定的出现频率、所述条件数量和所述表数量,对所述部分历史任务进行分类,以获得M类任务,所述M类任务中的每类任务均包括至少一个任务,所述M为大于或等于2的整数;
第二选取单元,用于从所述分类单元分类的M类任务中的每类任务中选取至少一个任务,以获得测试任务;
执行单元,用于执行所述第二选取单元获得的测试任务。
7.根据权利要求6所述的装置,其特征在于,所述第一选取单元包括:
获取子单元,用于获取SQL执行的全部历史任务;
统计子单元,用于统计第一任务中每个词的出现频率,所述第一任务为所述获取子单元获取的全部历史任务中的任一任务;
选取子单元,用于根据所述统计子单元统计的出现频率从所述全部历史任务中选取部分历史任务。
8.一种性能测试装置,其特征在于,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-5任一项所述的方法。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810311272.1A CN110209567B (zh) | 2018-04-09 | 2018-04-09 | 一种性能测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810311272.1A CN110209567B (zh) | 2018-04-09 | 2018-04-09 | 一种性能测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209567A CN110209567A (zh) | 2019-09-06 |
CN110209567B true CN110209567B (zh) | 2021-09-10 |
Family
ID=67779028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810311272.1A Active CN110209567B (zh) | 2018-04-09 | 2018-04-09 | 一种性能测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209567B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
CN106528874A (zh) * | 2016-12-08 | 2017-03-22 | 重庆邮电大学 | 基于Spark内存计算大数据平台的CLR多标签数据分类方法 |
CN107102941A (zh) * | 2017-03-30 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种测试用例的生成方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100551452B1 (ko) * | 2005-11-29 | 2006-02-14 | (주)그리드원 | 서버의 응용프로그램 성능을 시험하기 위한 그리드 컴퓨팅시스템 |
-
2018
- 2018-04-09 CN CN201810311272.1A patent/CN110209567B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729361A (zh) * | 2012-10-12 | 2014-04-16 | 百度在线网络技术(北京)有限公司 | 一种数据库性能测试方法及装置 |
CN106528874A (zh) * | 2016-12-08 | 2017-03-22 | 重庆邮电大学 | 基于Spark内存计算大数据平台的CLR多标签数据分类方法 |
CN107102941A (zh) * | 2017-03-30 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种测试用例的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110209567A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110020422B (zh) | 特征词的确定方法、装置和服务器 | |
EP3456360B1 (en) | Device and method for tuning relational database | |
CN110765247B (zh) | 一种用于问答机器人的输入提示方法及装置 | |
CN110309110A (zh) | 一种大数据日志监控方法及装置、存储介质和计算机设备 | |
CN109597986A (zh) | 异常问题的定位方法、装置、设备及存储介质 | |
CN110390198B (zh) | 一种对小程序的风险巡检方法、装置及电子设备 | |
CN109656779A (zh) | 内存监控方法、装置、终端和存储介质 | |
CN103886092A (zh) | 一种提供终端故障问题解决方案的方法及装置 | |
CN110728313A (zh) | 一种用于意图分类识别的分类模型训练方法及装置 | |
CN113934851A (zh) | 用于文本分类的数据增强方法、装置及电子设备 | |
CN113535773A (zh) | 数据库优化方法、数据库优化装置、电子设备和存储介质 | |
Hirsch et al. | Root cause prediction based on bug reports | |
CN110650531B (zh) | 一种基站坐标标定方法、系统、存储介质及设备 | |
CN106874332B (zh) | 数据库访问方法和装置 | |
CN110209567B (zh) | 一种性能测试方法及装置 | |
CN105787004A (zh) | 一种文本分类方法及装置 | |
CN114611850A (zh) | 业务分析方法、装置及电子设备 | |
CN114697127B (zh) | 一种基于云计算的业务会话风险处理方法及服务器 | |
US10496524B2 (en) | Separating test coverage in software processes using shared memory | |
CN113377604B (zh) | 一种数据处理方法、装置、设备和存储介质 | |
US20040073892A1 (en) | Event-driven observability enhanced coverage analysis | |
CN109033133A (zh) | 基于特征项权重增长趋势的事件检测与跟踪方法 | |
CN108280224A (zh) | 万级维度数据生成方法、装置、设备以及存储介质 | |
CN111242195A (zh) | 模型、保险风控模型训练方法、装置及电子设备 | |
CN110633430B (zh) | 事件发现方法、装置、设备和计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |