Hive数据仓库技术与应用课件汇总整本书电子教案全套课件完整版ppt最新教学教程.pptx
-
资源ID:78672157
资源大小:2.72MB
全文页数:139页
- 资源格式: PPTX
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
Hive数据仓库技术与应用课件汇总整本书电子教案全套课件完整版ppt最新教学教程.pptx
Hive数据仓库技术与应用01任务Hive的概念02任务Hive前的准备单元1Hadoop生态与Hive03任务Hive的产生背景1Hive的产生背景1Hive的产生背景ApacheHive数据仓库软件可以使用SQL方便地阅读、编写和管理分布在分布式存储中的大型数据集。产生背景有以下几个方面:Hive的背景1Hive的产生背景(1)MapReduce编程使用起来不方便、不适合事务/单一请求处理、不能随即读取、以蛮力代替索引。(2)Hive由Facebook开源,最初用于解决海量结构化的日志数据统计问题,它是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。Hive的产生背景1Hive的产生背景(3)Hive是建立在Hadoop上的数据仓库基础构架。(4)Hive比较简单、容易上手(提供了类似于SQL查询语言HQL)、为超大数据集设计的计算/存储扩展能力(MR计算,HDFS存储)、统一的元数据管理。Hive的产生背景Hive的产生背景Hive的实现Hive对于这个三个部分的实现都提供了相应的支持:数据获取(DataAcquisition)数据存储数据访问(DataAccess)Hive的产生背景Hive的实现Hive对于这个三个部分的实现都提供了相应的支持:数据获取(DataAcquisition)数据存储数据访问(DataAccess)2Hive的概念2Hive的概念(1)Hive包含了3大组成部分:HiveClientsHiveServicesHiveStorageandComputing2Hive的概念Hive组件:Driver、Compiler、ExecutionEgine、MetastoreMetastore组件包括两个部分:Metastoredatabase和MetastoreservicesHive由Facebook实现并开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供HQL(HiveSQL)查询功能,底层数据是存储在HDFS上。Hive组件3Hadoop生态与Hive3Hadoop生态与hivePigpig是数据流的语言,所以很适合做物质的数据探索和ETL阶段数据的非处理,它和Spark的思想很相似,所以也可以说Spark是实现正确的Pig。Pig包括两部分:一是用于描述数据流的语言,称为PigLatin;二是用于运行PigLatin程序的执行环境。3Hadoop生态与hiveHBaseHBase是ApacheHadoop中的一个子项目,HBase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用Hadoop的DFS工具就可以看到这些这些数据存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作。3Hadoop生态与hive采用HBase的原因HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。HBase是介于MapEntry(key&value)和DBRow之间的一种数据存储方式。ThankYOU!Hive数据仓库技术与应用01任务JDK的配置02任务环境准备单元2免密登陆03任务VMware与SecureCRT Portable1VMware与SecureCRT Portable1VMware与SecureCRT PortableVMware(威睿)虚拟机软件,是全球桌面到数据中心虚拟化解决方案的领导厂商。全球不同规模的客户依靠VMware来降低成本和运营费用、确保业务持续性、加强安全性并走向绿色。VMware的简介1VMware与SecureCRT Portable(1)VMware虚拟化前:每台主机一个操作系统;软件硬件紧密地结合;在同一主机上运行多个应用程序通常会遭遇沖突;系统的资源利用率低;硬件成本高昂而且不够灵活;(2)VMware虚拟化后:打破了操作系统和硬件的互相依赖;通过封装到到虚拟机的技术,管理操作系统和应用程序为单一的个体;強大的安全和故障隔离;虚拟机是独立于硬件的,它们能在任何硬件上运行;Vmware的虚拟化1VMware与SecureCRT Portable分区隔离封装相对与硬件独立Vmware的四大特性2JDK的配置2JDK的配置中文称为Java开发工具包,由SUN公司提供。它为Java程序开发提供了编译和运行环境,所有的Java程序的编写都依赖于它。JDK的简介2JDK的配置(1)J2SE:标准版(2)J2EE:企业版(3)J2ME:微缩版JDK的版本2JDK的配置使用MobaXterm连接虚拟机,将文件直接拖至虚拟机文件夹中上传JDK的介质文件共享(1)解压将下载下来的.tar.gz文件解压。(2)设置环境变量编辑.bashrc文件。(3)在该文件的末尾,加上几行代码(4)验证JDK是否安装完成2JDK的配置tar的解压与压缩3免密登陆3免密登陆(1)配置每个节点的hosts文件(2)每个节点生成SSH密钥(3)在主节点上将公钥拷到一个特定文件authorized_keys中(4)将authorized_keys文件拷到下一个节点,并将该节点的ssh密钥id_rsa.pub加入该文件中。(5)登录hadoop02主机命令(6)验证免密登录ThankYOU!Hive数据仓库技术与应用01任务Hadoop的配置02任务Hadoop搭建与配置单元3Hadoop搭建1Hadoop搭建1Hadoop搭建上传Hadoop的介质(1)block(2)Namenode(3)DataNode的工作机制1Hadoop搭建解压Hadoop压缩包,使用tar命令将Hadoop压缩包进行解压缩解压Hadoop压缩包1Hadoop搭建(1)编辑core-hdfs.xml(2)编辑hdfs-site.xml(3)编辑mapred-site.xml(4)编辑yarn-site.xml修改Hadoop的配置文件1Hadoop搭建启动命令:start-all.sh启动顺序:NameNode、DateNode、SecondaryNameNode、obTracker、TaskTracker停止命令:stop-all.sh关闭顺序性:JobTracker、TaskTracker、NameNode、DateNod、SecondaryNameNode启动Hadoop服务2Hadoop的配置2Hadoop的配置Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成员组成Hadoop的整体框架2Hadoop的配置Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop实现了一个分布式文件系统,简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Hadoop的介绍2Hadoop的配置MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce综述2Hadoop的配置Hadoop两大核心设计Hadoop核心设计2Hadoop的配置MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。MapReduce的由来2Hadoop的配置一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作。MapReduce:映射和化简2Hadoop的配置化简操作工作方式与之类似,但是由于化简操作的可并行性相对较差,主节点会尽量把化简操作只分配在一个节点上,或者离需要操作的数据尽可能近的节点上。MapReduce:分布可靠2Hadoop的配置在Google,MapReduce用在非常广泛的应用程序中,包括“分布grep、分布排序、Web连接图反转、每台机器的词矢量、Web访问日志分析、反向索引构建、文档聚类、机器学习、基于统计的机器翻译.”MapReduce:用途2Hadoop的配置数据划分和计算任务调度数据/代码互定位系统优化出错检测和恢复MapReduce:主要功能ThankYOU!Hive数据仓库技术与应用01任务安装Hive实验02任务安装Hive的基础操作单元4Hive命令03任务Hive的几种模式04任务数据类型和文件格式05任务安装Hive的基础操作单元4Hive权限管理06任务Hive命令行界面Hive常用优化方法07任务1Hive的几种模式1Hive的几种模式本地模式本地模式没有HDFS,只能测试MapReduce程序,程序运行的结果保存在本地文件系统。1Hive的几种模式本地模式的配置完全本地模式自动本地模式1Hive的几种模式远程模式元数据信息被存储在MySQL数据库中。MySQL数据库与Hive运行不在同一台物理机器上。多用于实际的生产运行环境。远程模式模型1Hive的几种模式远程模式的步骤在Linux的MySQL数据库中创建数据库解压安装包上传mysql驱动的jar包到指定的lib文件夹内。修改配置文件hive-site.xml。确保Hadoop运行正常。运行1Hive的几种模式内嵌模式在不修改任何配置的情况下,在本机通过默认的元数据数据库管理,Hive中有一个自带的数据库derby,在首次启动的时候需要进行初化数据。步骤如下:执行Hive命令之前需要将HDFS启动。在哪一个目录下运行Hive,都必须进行初始化。如果在同一个目录下,多次初始化时,需要将metastore_db目录删除掉,再进行初始化。2安装Hive实验2安装Hive实验Hive简介Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,使数据查询和分析变得更方便,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。Hive构建在基于静态批处理的Hadoop之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。2安装Hive实验Hive的定义Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。2安装Hive实验设计特点Hive的设计特点如下:(1)支持索引,加快数据查询。(2)不同的存储类型,例如,纯文本文件、HBase中的文件。(3)将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。(4)可以直接使用存储在Hadoop文件系统中的数据。(5)内置大量用户函数UDF来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。(6)类SQL的查询方式,将SQL查询转换为MapReduce的Job在Hadoop集群上执行。2安装Hive实验数据存储(1)Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。(2)Hive中所有的数据都存储在HDFS中,Hive中包含以下数据模型:表(Table)、外部表(ExternalTable)、分区(Partition)和桶(Bucket)。3Hive命令3Hive命令(1)Hive命令创建表语句:CreateTable是用于在Hive中创建表的语句。(2)加载数据(3)重命名分区(4)删除分区4Hive命令行界面4Hive命令行界面Hive命令行选项命令说明-d,-define 在Hive命令中使用变量替换(Variablesubstitution)。例如,-dA=Bor-defineA=B-e在命令行模式下直接运行SQL语句-f在命令行模式下运行指定文件中的SQL语句-H,-help输出命令行选项信息-h连接安装在远程主机上的Hive服务器-hiveconf连接Hive服务器时同时指定一些属性值-hivevar应用到Hive命令中的变量替换(Variablesubstitution)。例如,-hivevarA=B-i指定初始化文件。如果在启动Hive时没有使用-i选项指定初始文件,CLI(CommandLineInterface)将使用$HIVE_HOME/bin/.hivercand$HOME/.hiverc进行初始化-p连接到指定端口的Hive服务器-S,-silentHive以silent模式运行,命令执行过程中不输出中间信息-v,-verboseHive以verbose模式,在控制台显示SQL语句的执行状态4Hive命令行界面Hive命令行示例(1)在命令行中嵌入SQL语句(2)在命令行中嵌入SQL语句同时设置Hive运行参数值(3)以silent模式执行SELECT语句,并且把查询结果导出到文本文件a.txt中。(4)直接执行指定脚本文件中的SQL语句(5)在启动Hive的时候指定初始化脚本文件4Hive命令行界面批处理模式命令当加上-f或者-e选项时,Hive将在批处理模式下执行SQL语句命令说明hive-e执行一条SQL查询语句hive-f 执行包含在指定文件中的一条或者多条SQL查询语句5数据类型和文件格式5数据类型和文件格式基本数据类型数值型数据型类型5数据类型和文件格式IntegralTypesIntegralTypes(TINYINT、SMALLINT、INT/INTEGER、BIGINT)默认情况下,整数型为INT型,当数字大于INT型的范围时,会自动解释执行为BIGINT。#INTEGERisintroducedasasynonymforINTinHive2.2.0(HIVE-14950).数据型类型5数据类型和文件格式日期型日期型类型5数据类型和文件格式复杂类型复杂类型5数据类型和文件格式文件格式Hive文件存储格式包括以下几类:TEXTFILE、SEQUENCEFILE、RCFILE和ORCFILE(0.11版本以后出现)。(1)TEXTFILE(2)SEQUENCEFILE(3)RCFILE5数据类型和文件格式集合数据类型除了String、Boolean、Date等基本数据类型之外,Hive还支持三种高级数据类型:(1)ARRAY(2)MAP(3)STRUCT6Hive权限管理6Hive权限管理角色极限控制创建和删除角色展示所有roles赋予角色权限查看角色权限角色赋予用户回收角色权限查看某个用户所有角色6Hive权限管理用户角色控制操作(OPERA)解释ALL所有权限ALTER允许修改元数据(modifymetadatadataofobject)表信息数据UPDATE允许修改物理数据(modifyphysicaldataofobject)实际数据CREATE允许进行Create操作DROP允许进行DROP操作INDEX允许建索引(目前还没有实现)LOCK当出现并发的使用允许用户进行LOCK和UNLOCK操作SELECT允许用户进行SELECT操作SHOW_DATABASE允许用户查看可用的数据库6Hive权限管理权限的细分注意:Hive支持不同层次的权限控制,从全局数据库数据表列(分区)。有些权限比如drop等在列上不起作用。操作(OPERA)权限ALTER更改表结构,创建分区CREAT创建表DROP删除表或分区INDEX创建和删除索引LOCK锁定表,保证并发SELECT查询表权限SHOW_DATABASE查看数据库权限UPDATE为表加载本地数据的权限6Hive权限管理用户、组、角色当Hive里面用于N多用户和N多张表的时候,管理员给每个用户授权每张表会崩溃的。所以,这个时候就可以进行组(GROUP)授权。当给用户组授权变得不够灵活的时候,角色(ROLES)就派上用途了。用户可以被放在某个角色之中,然后角色可以被授权。角色不同于用户组,是由Hadoop控制的,同时也是由Hive内部进行管理的。6Hive权限管理Role创建角色删除角色把role_test1角色授权给jayliu用户查看jayliu用户被授权的角色取消jayliu用户的role_test1角色把某个库的所有权限给一个角色,角色给用户把某个库的权限直接给用户查看用户对数据看的权限7Hive常用优化方法7Hive常用优化方法控制Reducer数量默认ReducerTask任务个数,Hive中可以查看当前设置的Reducer任务个数。7Hive常用优化方法使用Mapjoin如果用户有一张表非常非常小,而另一张关联的表非常非常大的时候,可以使用mapjoin命令,以此Join操作在Map阶段完成,不再需要Reduce,也就不需要经过Shuffle过程,从而能在一定程度上节省资源,提高JOIN效率。7Hive常用优化方法Map阶段的join7Hive常用优化方法解决数据倾斜的通用方法发生数据倾斜的现象时,即为任务进度长时间维持在99%,只有少量Reducer任务完成,未完成任务数据读写量非常大,超过10GB,在聚合操作中是经常发生的现象。通用解决方法:sethive.groupby.skewindata=true;将一个MapReduce拆分成两个MapReduce。解决方法有两种:(1)通过where条件过滤掉user_id为null的记录。(2)将为null的user_id设置一个随机数值。保证所有数据平均的分配到所有的Reducer中处理。ThankYOU!Hive数据仓库技术与应用01任务Hive数据库02任务HiveQL的数据定义单元5修改表03任务HiveQL的数据定义1HiveQL的数据定义1HiveQL的数据定义HiveQL是Hive查询语言,它不完全遵守任何一种ANSISQL标准的修订版,它与MySQL最接近,但还有显著的差异。1HiveQL的数据定义(1)Hive中的数据库(2)修改数据库(3)创建表(4)管理表1HiveQL的数据定义分区表和管理表Hive中有分区表的概念。分区表将数据以一种符合逻辑的方式进行组织。比如分层存储。如果表中的数据以及分区个数非常大的话,执行一个包含所有分区的查询可能会触发一个巨大的MapReduce任务。建议的安全措施是将Hive设置为strict模式,这样对分区表查询WHERE子句没有加分区过滤的话,将会禁止提交这个任务。可以按照下面的语句将属性设置为nonstrict模式1HiveQL的数据定义HiveQL和SQL的区别(1)Hive不支持等值连接(2)分号字符(3)ISNOTNULL(4)Hive不支持将数据插入现有的表或分区中,仅支持覆盖重写整个表(5)Hive不支持INSERTINTO表Values()、UPDATE和DELETE操作,尽量避免使用很复杂的锁机制来读写数据。INSERTINTO就是在表或分区中追加数据。(6)Hive支持嵌入MapReduce程序,来处理复杂的逻辑2Hive数据库2Hive数据库Hive的数据库(1)Hive在HDFS上的默认存储路径(2)Hive中的数据库(Database)2Hive数据库修改数据库属性(1)修改数据库属性(2)修改数据库属性(3)删除数据库3修改表3修改表增加、修改和删除表分区(1)添加分区(2)删除分区(3)修改分区(4)表重命名(5)增加列(6)删除或替换列(7)修改表属性3修改表众多的修改表语句(1)AlterTable语句(2)RenameTo语句(3)Change语句(4)REPLACE语句ThankYOU!Hive数据仓库技术与应用01任务GROUP BY02任务HiveQL语句单元6抽样查询03任务 select、from语句的概念04任务JOIN语句05任务HiveQL语句单元6 WHERE语句1 select、from语句的概念1 select、from语句的概念使用正则表达式来指定列(1)regexp(2)regexp_extract(3)regexp_replace1 select、from语句的概念使用列值进行计算求一个Hive语句,指定行之前的某列值之和,占此列和的百分比。Idvalue13213641252Sum241 select、from语句的概念算术运算符(1)加法操作:“+”(2)减法操作:“-”(3)乘法操作:*(4)除法操作:/(5)取余操作:%(6)位与操作:&(7)位或操作:|(8)位异或操作:(9)位取反操作:1 select、from语句的概念使用函数FIRST_VALUELAST_VALUELEAD(col,n,DEFAULT)LAG(col,n,DEFAULT)1 select、from语句的概念使用函数OVER从句(1)使用标准的聚合函数COUNT、SUM、MIN、MAX、AVG;(2)使用PARTITIONBY语句,使用一个或者多个原始数据类型的列;(3)使用PARTITIONBY与ORDERBY语句,使用一个或者多个数据类型的分区或者排序列;(4)使用窗口规范,窗口规范支持以下格式:1 select、from语句的概念LIMIT语句LIMIT子句可以被用于强制SELECT语句返回指定的记录数。LIMIT接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是0(而不是1):为了与PostgreSQL兼容,MySQL也支持句法:LIMIT#OFFSET#。1 select、from语句的概念列的别名视图里面有多张表:CREATEVIEWVW_testASSELECTa.aaASa1,b.bbASb1FROMALEFTJOINbONa.a1=b.b1相得到以下结果表列名别名Aaaa1Bbbb11 select、from语句的概念嵌套select语句嵌套SELECT语句也叫子查询,一个SELECT语句的查询结果能够作为另一个语句的输入值。(1)单行子查询(2)多行子查询(3)多列子查询(4)内联视图子查询(5)在HAVING子句中使用子查询2 GROUP BY2Group By 了解GroupBy语句GROUPBY语句用于结合合计函数,根据一个或多个列对结果集进行分组。SQLGROUPBY语法。SQL GROUP BY 语法3抽样查询3抽样查询数据块抽样(1)随机抽样(2)等距抽样(3)分层抽样3抽样查询分桶表的输入裁剪抽样会扫描表中所有的数据,然后在每N行中抽取一行数据。不过,如果TABLESAMPLE语句中指定的列和CLUSTEREDBY语句中指定的列相同,那么TABLESAMPLE查询就只会扫描涉及到的表的哈斯分区下的数据。4WHERE语句4WHERE语句谓语操作符这些操作符用于JoinOn和having语句操作符支持的数据类型描述A=B基本数据类型如果A等于B则返回TRUE,反之返回FALSEAB基本数据类型如果A和B都为NULL,则返回TRUE,其他的和等号(=)操作符的结果一致,如果任一为NULL则结果为NULLAB,A!=B基本数据类型A或者B为NULL则返回NULL;如果A不等于B,则返回TRUE,反之返回FALSEAB基本数据类型A或者B为NULL,则返回NULL;如果A小于B,则返回TRUE,反之返回FALSEAB基本数据类型A或者B为NULL,则返回NULL;如果A大于B,则返回TRUE,反之返回FALSEA=B基本数据类型A或者B为NULL,则返回NULL;如果A大于等于B,则返回TRUE,反之返回FALSE4WHERE语句谓语操作符操作符支持的数据类型描述A NOT BETWEEN B AND C基本数据类型如果A,B或者C任一为NULL,则结果为NULL。如果A的值大于等于B而且小于或等于C,则结果为TRUE,反之为FALSE。如果使用NOT关键字则可达到相反的效果A IS NULL所有数据类型如果A等于NULL,则返回TRUE,反之返回FALSEA IS NOT NULL所有数据类型如果A不等于NULL,则返回TRUE,反之返回FALSEIN(数值1,数值2)所有数据类型使用IN运算显示列表中的值A NOT LIKE BSTRING类型B是一个SQL下的简单正则表达式,如果A与其匹配的话,则返回TRUE;反之返回FALSE。B的表达式说明如下:x%表示A必须以字母x开头,%x表示A必须以字母x结尾,而%x%表示A包含有字母x,可以位于开头,结尾或者字符串中间。如果使用NOT关键字则可达到相反的效果A RLIKE B,A REGEXP BSTRING类型B是一个正则表达式,如果A与其匹配,则返回TRUE;反之返回FALSE。匹配使用的是JDK中的正则表达式接口实现的,因为正则也依据其中的规则。例如,正则表达式必须和整个字符串A相匹配,而不是只需与其字符串匹配4WHERE语句关于浮点数比较浮点数一般用于表示含有小数部分的数值。当一个字段被定义为浮点类型后,如果插入数据的精度超过该列定义的实际精度,则插入值会被四舍五入到实际定义的精度值。5JOIN语句5 JOIN优化此节讲述如何优化JOIN查询带有排序的情况。大致分为对连接属性排序和对非连接属性排序两种情况。5 JOIN优化对连接属性进行排序5 JOIN优化对非连接属性进行排序ThankYOU!Hive数据仓库技术与应用01任务 Hive综合案例02任务Hive和企业接轨单元7Hive和亚马逊网络服务系统(AWS)1Hive和亚马逊网络服务系统(AWS)1 Hive和亚马逊网络服务系统(AWS)(1)弹性MapReduce的优点(2)注意事项1 Hive和亚马逊网络服务系统(AWS)(3)EMR上的实例每个Amazon集群都具有一个或者多个节点。每个节点都可以放人到如下3种实例组中的一组中。管理者实例组核心实例组任务(task)实例组2Hive综合案例2Hive综合案例Hive操作演示(1)内部表创建表创建内部表加载数据查询数据2Hive综合案例外部表创建外部表存放数据目录在Hive中创建外部表,指定表存放目录加载数据文件到外部表对应的目录中2Hive综合案例交易数据演示(1)准备数据上传数据在Hive创建数据库和表。导入数据。2Hive综合案例交易数据演示(2)计算所有订单每年的总金额算法分析查看结果2Hive综合案例交易数据演示(3)计算所有订单每年最大的金额订单的销售额算法分析执行HSQL语句ThankYOU!