CN113360481B - 一种数据处理方法、装置、设备及计算机可读存储介质 - Google Patents
一种数据处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113360481B CN113360481B CN202110905566.9A CN202110905566A CN113360481B CN 113360481 B CN113360481 B CN 113360481B CN 202110905566 A CN202110905566 A CN 202110905566A CN 113360481 B CN113360481 B CN 113360481B
- Authority
- CN
- China
- Prior art keywords
- data
- request
- tables
- hive
- sql
- 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
- 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/21—Design, administration or maintenance of databases
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、装置、设备及计算机可读存储介质,方法包括:根据各数据表的数据量确定SQL请求中请求表的数据量;根据请求表的数据量对请求表间的关联顺序进行调整,将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、子表及SQL请求发送至hive,由hive进行处理,得到中间数据;确定中间数据的大小、reduce个数及各reduce平均分配的中间数据量,生成数据分配信息并发送至hive,由hive将中间数据平均分配至各reduce,以进行中间数据的写出。本申请公开的技术方案,对SQL请求进行优化处理,并对hive得到的中间数据进行平均分配,以降低资源占用,提高任务处理效率。
Description
技术领域
本申请涉及数据仓库技术领域,更具体地说,涉及一种数据处理方法、装置、设备及计算机可读存储介质。
背景技术
数据仓库,是为给企业所有级别的决策制定过程,提供所有类型数支持的战略集合。
目前,在构建企业级数仓的过程中,是由业务人员进行SQL(Structured QueryLanguage,结构化查询语言)语句的编写,并将编写的SQL语句发送至hive进行任务转化及并对任务进行处理,以获取与SQL语句对应的结果,但是,由于部分业务人员只熟悉SQL语法,而对于hive及HDFS(Hadoop分布式文件系统)底层架构原理并不熟悉,因此,则会导致编写出来的SQL语句没有经过结合实际底层的优化和参数设置,从而使得对应任务占用资源过大,运行效率过低。
综上所述,如何提高任务运行效率,是目前本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本申请的目的是提供一种数据处理方法、装置、设备及计算机可读存储介质,用于提高任务运行效率。
为了实现上述目的,本申请提供如下技术方案:
一种数据处理方法,包括:
接收SQL请求,根据预先获取的hive中各数据表的数据量确定所述SQL请求中的请求表的数据量;
根据所述请求表的数据量对所述请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、所述子表及所述SQL请求发送至所述hive,由所述hive根据所述SQL请求对调整关联顺序后的请求表及所述子表进行处理,得到中间数据;
确定所述中间数据的大小、所述hive中reduce个数及每个所述reduce平均分配的中间数据量,根据所述中间数据量生成数据分配信息并发送至所述hive,由所述hive根据所述数据分配信息将所述中间数据平均分配至各所述reduce,以利用所述reduce进行中间数据的写出。
优选的,预先获取hive中各数据表的数据量,包括:
根据每个所述数据表中各文件块的存储位置,获取各所述文件块的数据量,并根据每个所述数据表中各所述文件块的数据量得到各所述数据表的数据量;
其中,若所述数据表中数据量小于第一阈值的文件块的个数大于第二阈值,则将所述数据表中数据量小于所述第一阈值的文件块进行合并,且合并后的文件块的数据量不大于第三阈值,所述第三阈值大于所述第一阈值。
优选的,在由所述hive根据所述SQL请求对调整关联顺序后的请求表及所述子表进行处理时,还包括:
获取与所述SQL请求对应的任务在各服务器上的运行信息,并对所述运行信息进行显示;其中,所述运行信息包括任务运行进度、服务器资源消耗。
优选的,获取与所述SQL请求对应的任务在各服务器上的运行信息,包括:
获取与所述任务对应的请求JVM进程及所述请求JVM进程对应的运行信息;
调用Yarn的查询API,通过所述查询API获取所述任务的运行信息;
将通过获取所述请求JVM进程得到的运行信息、通过所述查询API获取的运行信息进行比较,以得到所述任务对应的运行信息。
优选的,在获取与所述SQL请求对应的任务在各服务器上的运行信息之后,还包括:
将所述运行信息存储在Redis数据库中。
优选的,在利用所述reduce进行中间数据的写出之后,还包括:
获取与所述SQL请求对应的任务的运行日志,并对所述运行日志进行显示。
优选的,还包括:
若确定所述任务运行失败,则从所述运行日志中提取运行失败信息,并对所述运行失败信息进行显示。
一种数据处理装置,包括:
接收模块,用于接收SQL请求,根据预先获取的hive中各数据表的数据量确定所述SQL请求中的请求表的数据量;
处理模块,用于根据所述请求表的数据量对所述请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、所述子表及所述SQL请求发送至所述hive,由所述hive根据所述SQL请求对调整关联顺序后的请求表及所述子表进行处理,得到中间数据;
分配模块,用于确定所述中间数据的大小、所述hive中reduce个数及每个所述reduce平均分配的中间数据量,根据所述中间数据量生成数据分配信息并发送至所述hive,由所述hive根据所述数据分配信息将所述中间数据平均分配至各所述reduce,以利用所述reduce进行中间数据的写出。
一种数据处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的数据处理方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的数据处理方法的步骤。
本申请提供了一种数据处理方法、装置、设备及计算机可读存储介质,其中,该方法包括:接收SQL请求,根据预先获取的hive中各数据表的数据量确定SQL请求中的请求表的数据量;根据请求表的数据量对请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、子表及SQL请求发送至hive,由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理,得到中间数据;确定中间数据的大小、hive中reduce个数及每个reduce平均分配的中间数据量,根据中间数据量生成数据分配信息并发送至hive,由hive根据数据分配信息将中间数据平均分配至各reduce,以利用reduce进行中间数据的写出。
本申请公开的上述技术方案,通过确定SQL请求中请求表的数据量,根据请求表的数据量对请求表间的关联顺序进行调整,将请求表中的大表拆分成多个子表来实现对SQL请求中请求表的预处理,从而便于缩短hive的处理时间,加快中间数据的获取,进而便于提高与SQL请求对应的任务的运行效率,且通过中间数据大小及reduce个数的确定及每个reduce平均分配的中间数据量的计算而由hive将中间数据平均分配给各reduce,以使得各reduce进行相等数据量的中间数据的写出,从而缩短数据的写出时间,提高数据写出效率,进而提高任务运行效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种数据处理方法的流程图;
图2为本申请实施例提供的优化监控工具的结构示意图;
图3为本申请实施例提供的一种数据处理装置的结构示意图;
图4为本申请实施例提供的一种数据处理设备的结构示意图。
具体实施方式
hive是基于Hadoop构建的一个数据仓库工具,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉MapReduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。
Hive虽然能将用户编写的SQL语句转换成对应的任务,使得不熟悉mapReduce的分析人员也能处理数据仓库中的数据,但由于部分业务人员因为只熟悉SQL语法,对于hive及HDFS底层架构原理并不熟悉,导致编写出来的SQL语句并没有结合实际底层的优化和参数设置,从而使得对应任务占用资源过大,运行效率缓慢。
为此,本申请提供一种数据处理方法、装置、设备及计算机可读存储介质,用于提高SQL请求对应的任务的运行效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请实施例提供的一种数据处理方法的流程图,本申请实施例提供的一种数据处理方法,可以包括:
S11:接收SQL请求,根据预先获取的hive中各数据表的数据量确定SQL请求中的请求表的数据量。
在本申请中,可以预先统计hive中所有数据表的数据量,且在进行统计时可以采用定时方式进行统计,以便于能够及时获取数据表的数据量的变化。
用户在编写完SQL请求之后,可以通过用户web UI(User Interface,用户界面)界面进行SQL请求的发送。在接收到SQL请求之后,可以从预先进行数据量统计的数据表中找出SQL请求中的请求表(具体可以根据表的名称、标识等信息进行确定),并确定SQL请求中的请求表的数据量,以便于根据请求表的数据量进行后续处理。
其中,预先进行数据表数据量的统计可以便于在接收到SQL请求后直接进行SQL请求中请求表的数据量获取,以缩短请求表数据量的获取时间,提高请求表数据量的获取效率。另外,预先进行数据表数据量的同时可以为用户同时提交多个任务提供了技术支持。
S12:根据请求表的数据量对请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、子表及SQL请求发送至hive,由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理,得到中间数据。
在步骤S11的基础上,可以根据各请求表的数据量对存在关联关系的请求表间的关联顺序进行调整,具体地,可以按照数据量由小到大的方式对请求表间的关联顺序进行调整,以使得请求表间是按照数据量由小到大的顺序进行关联的,以便于后续hive在接收到调整关联顺序后的请求表时可以先把位于关联顺序前端且数据量比较小的请求表分发给各服务器,以减少请求表间进行关联时的网络传输,从而缩短请求表间进行关联所花费的时间,提高请求表间的关联效率,进而便于提高对请求表的处理效率。
另外,在对请求表的关联顺序进行调整之后或者同时,可以将数据量大于预设值的请求表拆分成多个子表,同时对子表进行相互关联,其中,预设值的大小可以根据经验或者需求进行设置,且拆分成的子表的数据量应大于预设限定值,其中,预设限定值小于预设值,且预设限定值的大小具体可以根据经验或者需求进行设置,以避免拆分过多的子表而造成资源浪费,例如可以将数据量达到TB级别的数据表进行切分,以得到多个子表,同时进行相互关联。通过将数据量大于预设值的请求表拆分成多个字表可以便于hive在根据字段进行请求表之间的关联时能够同时与拆分成的多个子表进行关联,以提高关联的并行度,从而减少任务运行时间。
在对请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表之后,可以将调整关联顺序后的请求表、拆分成的子表以及接收到的SQL请求发送给hive,以由hive将SQL请求转化成对应的任务,并根据所转化成的任务对调整关联顺序后的请求表及拆分成的子表进行处理,以得到中间数据。其中,在hive转化成对应的任务并进行任务处理时,具体是将任务拆分成多个小任务并行运行和处理,以便于提高任务处理效率。
经过对请求表间关联顺序的调整以及请求表的拆分,可以便于缩短hive对于任务的处理时间,从而便于提高hive对于任务的处理效率。
需要说明的是,在将请求表拆分成多个子表且对子表进行处理时,hive需要将各子表得到的结果进行合并,以得到与拆分前的请求表对应的总结果,从而便于提高任务处理的准确性。
S13:确定中间数据的大小、hive中reduce个数及每个reduce平均分配的中间数据量,根据中间数据量生成数据分配信息并发送至hive,由hive根据数据分配信息将中间数据平均分配至各reduce,以利用reduce进行中间数据的写出。
在hive进行处理而得到中间数据之后,可以确定中间数据的大小(即中间数据的数据量)以及hive中reduce的个数,其中,reduce是hive中用于进行写数据的函数。在确定中间数据的大小及hive中reduce的个数之后,可以根据确定出的中间数据的大小及reduce的个数,计算并确定每个reduce应平均分配到的中间数量,且可以根据每个reduce平均分配的中间数据量生成数据分配信息,其中,该数据分配信息中具体可以包含reduce所应分配的中间数据量、所应分配的中间数据范围。在生成数据分配信息之后,可以将数据分配信息发送至hive,由hive根据所接收到的数据分配信息将所得到的中间数据平均分配至各个reduce,以利用reduce将所分配到的中间数据写出到输出表中或者输出到对应的结果文件中,从而完成任务的运行。
通过将中间数据平均分配到各个reduce可以使得各个reduce的处理时间尽量保持一致,以避免出现“木桶效应”,即避免因中间数据分配不均匀而导致各reduce处理时间不一致,以缩短reduce的处理时间,提高reduce的处理效率,从而提高任务处理效率。
需要说明的是,本申请具体可以集成一个优化监控工具,利用优化监控工具进行数据处理,以提高对SQL请求对应的任务的运行效率,且通过上述过程可知,本申请所集成的优化监控工具可以屏蔽对于大数据组件的直接使用,使得用户不需要关注组件及任务的优化等底层问题,更加专注与业务本身,也即使得用户仍然只需要会SQL即可,而不需要了解大数据框架底层原理去进行优化。
通过上述过程可知,相比于现有技术,本申请可以先对用户发送的SQL请求进行上述优化,并对hive得到的中间数据进行平均分配,以便于降低任务处理的资源占用,提高任务处理效率。需要说明的是,本申请对于SQL请求的优化所消耗的额外资源很少,所进行的优化措施而消耗的时间与任务实际运行时间相比可以忽略不计。
本申请公开的上述技术方案,通过确定SQL请求中请求表的数据量,根据请求表的数据量对请求表间的关联顺序进行调整,将请求表中的大表拆分成多个子表来实现对SQL请求中请求表的预处理,从而便于缩短hive的处理时间,加快中间数据的获取,进而便于提高与SQL请求对应的任务的运行效率,且通过中间数据大小及reduce个数的确定及每个reduce平均分配的中间数据量的计算而由hive将中间数据平均分配给各reduce,以使得各reduce进行相等数据量的中间数据的写出,从而缩短数据的写出时间,提高数据写出效率,进而提高任务运行效率。
本申请实施例提供的一种数据处理方法,预先获取hive中各数据表的数据量,可以包括:
根据每个数据表中各文件块的存储位置,获取各文件块的数据量,并根据每个数据表中各文件块的数据量得到各数据表的数据量;
其中,若数据表中数据量小于第一阈值的文件块的个数大于第二阈值,则将数据表中数据量小于第一阈值的文件块进行合并,且合并后的文件块的数据量不大于第三阈值,第三阈值大于第一阈值。
在预先获取hive中各数据表的数据量时,具体可以根据每个数据表中各文件块的存储位置,直接到文件块的存储位置进行文件块的数据量的获取,之后,对于每个数据表,可以将所包含的所有文件块的数据量进行叠加,以得到数据表的数据量,从而实现所有数据表数据量的获取,这种数据量获取方式可以跳过hive,不通过MapReduce的方式进行计算,以提高数据量获取效率。
另外,在获取数据表中各文件块的数据量之后,若数据表中数据量小于第一阈值的文件块的个数大于第二阈值,也即若数据表中存在过多(这里提及的过多即为个数大于第二阈值)的小文件块(这里提及的小文件块即为数据量小于第一阈值的文件块),其中,第一阈值具体可以为128MB或者其他大小,第二阈值具体可以根据需要进行设置,则可以对数据表中数据量小于第一阈值的文件块进行合并,即可以将多个数据量小于第一阈值的文件块合并成一个文件块,其中,合并后的文件块的数据量不大于第三阈值(第三阈值大于第一阈值),以避免因合并成的文件块过大而导致后续处理时间比较长,效率比较低,其中,第三阈值的大小具体可以根据需求进行设置。通过对小文件块进行合并处理可以使得后续在进行处理时hive中对应map的数量减少,从而使得任务本身占用的资源量有效降低。
本申请实施例提供的一种数据处理方法,在由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理时,还可以包括:
获取与SQL请求对应的任务在各服务器上的运行信息,并对运行进行显示;其中,运行信息可以包括任务运行进度、服务器资源消耗。
在本申请中,在由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理时,即在由hive对于SQL请求对应的任务进行运行时,可以定时(例如每隔1分钟或者其他时间间隔)获取与SQL请求对应的任务在各服务器上的运行信息,其中,这里提及的运行信息具体可以包含任务运行进度、服务器资源消耗及时间信息,且服务器资源消耗具体可以包括内存使用情况、操作系统缓存,磁盘IO占用情况等。
在获取运行信息之后,可以同时利用用户web UI界面对运行信息进行显示,具体地,可以在获取到运行信息之后直接在用户web UI界面上进行显示或者是在接收到用户对用户web UI界面的点击操作之后进行运行信息的显示,以便于实现对运行情况的监控,并便于用户直观地获取到运行信息。
另外,在本申请中,在获取到运行信息之后,可以将运行信息中的参数与对应的预警值进行比较,若运行信息中有参数超过对应的预警值,则可以通过用户web UI界面进行告警和提示,以便于用户及时对任务运行进行调整,并便于选择资源更加充足的队列进行运行。
本申请实施例提供的一种数据处理方法,获取与SQL请求对应的任务在各服务器上的运行信息,可以包括:
获取与任务对应的请求JVM进程及请求JVM进程对应的运行信息;
调用Yarn的查询API,通过查询API获取任务的运行信息;
将通过获取请求JVM进程得到的运行信息、通过查询API获取的运行信息进行比较,以得到任务对应的运行信息。
在本申请中,具体可以通过如下方式获取与SQL请求对应的任务在各服务器上的运行信息:
1)在任务进行运行时,直接查询系统本身的JVM(Java Virtual Machine,Java虚拟机)进程数及每个JVM进程对应的运行信息,且从中筛选出与任务对应的请求JVM进程及请求JVM进程对应的运行信息,以得到任务对应的运行信息;
2)通过调用Yarn(Yet Another Resource Negotiator,另一种资源协调者)的查询API(Application Programming Interface,应用程序接口),以通过查询API进行与SQL请求对应的任务的运行信息查询;
将通过上述1)中得到的运行信息与2)中得到的运行信息进行比较,以得到任务对应的运行信息,具体地,可以将二者中的时间信息进行比较,并将距离当前时间最近的时间信息对应的运行信息作为任务对应的运行信息,上述这种实现方法可以精确地得出任务的运行信息。
当然,考虑到通过YRAN进行任务运行信息的查询具有一定的延迟性,因此,本申请也可以直接采用上述1)中的方法进行运行信息的获取,以提高运行信息获取的便利性和准确性。
本申请实施例提供的一种数据处理方法,在获取与SQL请求对应的任务在各服务器上的运行信息之后,还可以包括:
将运行信息存储在Redis数据库中。
在本申请中,在获取与SQL请求对应的任务在各服务器上的运行信息之后,可以将任务的运行信息存储在Redis(Remote Dictionary Server,远程字典服务)数据库中,以便于后续进行运行信息的获取和查看。
需要说明的是,Redis数据库可以仅保留当前时间之前的一段固定时间(例如可以仅保留前一个小时)的运行信息,以确保查询速度,并便于能够快速进行相应运行信息的显示。
本申请实施例提供的一种数据处理方法,在利用reduce进行中间数据的写出之后,还可以包括:
获取与SQL请求对应的任务的运行日志,并对运行日志进行显示。
在本申请中,在利用reduce进行中间数据的写出之后,也即在任务运行完之后,可以获取与SQL请求对应的任务的运行日志,并直接在用户web UI界面上进行运行日志的显示或者是在接收到用户对用户web UI界面的点击操作之后进行运行日志的显示,以便于用户可以通过运行日志获取任务运行的相关信息。
需要说明的是,本申请对于运行信息的获取以及运行日志的获取所消耗的额外资源都很少,且所消耗的时间与任务实际运行时间相比可以忽略不计。
本申请实施例提供的一种数据处理方法,还可以包括:
若确定任务运行失败,则从运行日志中提取运行失败信息,并对运行失败信息进行显示。
在本申请中,若确定与SQL请求对应的任务运行失败,则可以在获取与SQL请求对应的任务的运行日志之后,通过标准异常匹配而从运行日志中提取运行失败信息,并可以对运行失败信息进行显示,以使得用户不需要手动下载及对冗长的日志进行分析而得到任务失败原因,从而提高任务运行失败原因的获取效率。其中,标准异常匹配具体可以根据以往经验进行确定。
具体可以参见图2,其示出了本申请实例提供的优化监控工具的结构示意图,可以包括用户web UI界面、SQL优化及调整模块、任务运行状态及日志获取模块,其中,用户webUI界面除了具备上述提及的显示和查询功能外,还具有SQL查询模型,也即后续在接收到SQL请求时可以对与该SQL请求相同的历史SQL请求对应的结果进行返回,SQL优化及调整模块即可以进行数据表数据量的获取、请求表关联顺序的调整、大表的拆分及每个reduce平均分配的中间数据量的确定等,任务运行状态及日志获取模块则可以进行运行信息和日志等的获取。需要说明的是,关于优化监控工具中各模块的具体功能可以参见上述对应部分的详细说明,在此不再赘述。
本申请实施例还提供了一种数据处理装置,参见图3,其示出了本申请实施例提供的一种数据处理装置的结构示意图,可以包括:
接收模块31,用于接收SQL请求,根据预先获取的hive中各数据表的数据量确定SQL请求中的请求表的数据量;
处理模块32,用于根据请求表的数据量对请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、子表及SQL请求发送至hive,由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理,得到中间数据;
分配模块33,用于确定中间数据的大小、hive中reduce个数及每个reduce平均分配的中间数据量,根据中间数据量生成数据分配信息并发送至hive,由hive根据数据分配信息将中间数据平均分配至各reduce,以利用reduce进行中间数据的写出。
本申请实施例提供的一种数据处理装置,包括用于预先获取hive中各数据表的数据量的预先获取模块,且该预先获取模块可以包括:
第一获取单元,用于根据每个数据表中各文件块的存储位置,获取各文件块的数据量,并根据每个数据表中各文件块的数据量得到各数据表的数据量;
合并单元,用于若数据表中数据量小于第一阈值的文件块的个数大于第二阈值,则将数据表中数据量小于第一阈值的文件块进行合并,且合并后的文件块的数据量不大于第三阈值,第三阈值大于第一阈值。
本申请实施例提供的一种数据处理装置,还可以包括:
第一获取模块,用于在由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理时,获取与SQL请求对应的任务在各服务器上的运行信息,并对运行进行显示;其中,运行信息可以包括任务运行进度、服务器资源消耗。
本申请实施例提供的一种数据处理装置,第一获取模块可以包括:
第二获取单元,用于获取与任务对应的请求JVM进程及请求JVM进程对应的运行信息;
调用单元,用于调用Yarn的查询API,通过查询API获取任务的运行信息;
比较单元,用于将通过获取请求JVM进程得到的运行信息、通过查询API获取的运行信息进行比较,以得到任务对应的运行信息。
本申请实施例提供的一种数据处理装置,还可以包括:
存储模块,用于在获取与SQL请求对应的任务在各服务器上的运行信息之后,将运行信息存储在Redis数据库中。
本申请实施例提供的一种数据处理装置,还可以包括:
第二获取模块,用于在利用reduce进行中间数据的写出之后,获取与SQL请求对应的任务的运行日志,并对运行日志进行显示。
本申请实施例提供的一种数据处理装置,还可以包括:
提取模块,用于若确定任务运行失败,则从运行日志中提取运行失败信息,并对运行失败信息进行显示。
本申请实施例还提供了一种数据处理设备,参见图4,其示出了本申请实施例提供的一种数据处理设备的结构示意图,可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行存储器41存储的计算机程序时可实现如下步骤:
接收SQL请求,根据预先获取的hive中各数据表的数据量确定SQL请求中的请求表的数据量;根据请求表的数据量对请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、子表及SQL请求发送至hive,由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理,得到中间数据;确定中间数据的大小、hive中reduce个数及每个reduce平均分配的中间数据量,根据中间数据量生成数据分配信息并发送至hive,由hive根据数据分配信息将中间数据平均分配至各reduce,以利用reduce进行中间数据的写出。
本申请实施例还提供了一种计算机可读存储介质计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
接收SQL请求,根据预先获取的hive中各数据表的数据量确定SQL请求中的请求表的数据量;根据请求表的数据量对请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、子表及SQL请求发送至hive,由hive根据SQL请求对调整关联顺序后的请求表及子表进行处理,得到中间数据;确定中间数据的大小、hive中reduce个数及每个reduce平均分配的中间数据量,根据中间数据量生成数据分配信息并发送至hive,由hive根据数据分配信息将中间数据平均分配至各reduce,以利用reduce进行中间数据的写出。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的一种数据处理装置、设备及计算机可读存储介质中相关部分的说明可以参见本申请实施例提供的一种数据处理方法中对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、 “包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
接收SQL请求,根据预先获取的hive中各数据表的数据量确定所述SQL请求中的请求表的数据量;
根据所述请求表的数据量对所述请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、所述子表及所述SQL请求发送至所述hive,由所述hive根据所述SQL请求对调整关联顺序后的请求表及所述子表进行处理,得到中间数据;
确定所述中间数据的大小、所述hive中reduce个数及每个所述reduce平均分配的中间数据量,根据所述中间数据量生成数据分配信息并发送至所述hive,由所述hive根据所述数据分配信息将所述中间数据平均分配至各所述reduce,以利用所述reduce进行中间数据的写出。
2.根据权利要求1所述的数据处理方法,其特征在于,预先获取hive中各数据表的数据量,包括:
根据每个所述数据表中各文件块的存储位置,获取各所述文件块的数据量,并根据每个所述数据表中各所述文件块的数据量得到各所述数据表的数据量;
其中,若所述数据表中数据量小于第一阈值的文件块的个数大于第二阈值,则将所述数据表中数据量小于所述第一阈值的文件块进行合并,且合并后的文件块的数据量不大于第三阈值,所述第三阈值大于所述第一阈值。
3.根据权利要求1所述的数据处理方法,其特征在于,在由所述hive根据所述SQL请求对调整关联顺序后的请求表及所述子表进行处理时,还包括:
获取与所述SQL请求对应的任务在各服务器上的运行信息,并对所述运行信息进行显示;其中,所述运行信息包括任务运行进度、服务器资源消耗。
4.根据权利要求3所述的数据处理方法,其特征在于,获取与所述SQL请求对应的任务在各服务器上的运行信息,包括:
获取与所述任务对应的请求JVM进程及所述请求JVM进程对应的运行信息;
调用Yarn的查询API,通过所述查询API获取所述任务的运行信息;
将通过获取所述请求JVM进程得到的运行信息、通过所述查询API获取的运行信息进行比较,以得到所述任务对应的运行信息。
5.根据权利要求3所述的数据处理方法,其特征在于,在获取与所述SQL请求对应的任务在各服务器上的运行信息之后,还包括:
将所述运行信息存储在Redis数据库中。
6.根据权利要求1所述的数据处理方法,其特征在于,在利用所述reduce进行中间数据的写出之后,还包括:
获取与所述SQL请求对应的任务的运行日志,并对所述运行日志进行显示。
7.根据权利要求6所述的数据处理方法,其特征在于,还包括:
若确定所述任务运行失败,则从所述运行日志中提取运行失败信息,并对所述运行失败信息进行显示。
8.一种数据处理装置,其特征在于,包括:
接收模块,用于接收SQL请求,根据预先获取的hive中各数据表的数据量确定所述SQL请求中的请求表的数据量;
处理模块,用于根据所述请求表的数据量对所述请求表间的关联顺序进行调整,并将数据量大于预设值的请求表拆分成子表,将调整关联顺序后的请求表、所述子表及所述SQL请求发送至所述hive,由所述hive根据所述SQL请求对调整关联顺序后的请求表及所述子表进行处理,得到中间数据;
分配模块,用于确定所述中间数据的大小、所述hive中reduce个数及每个所述reduce平均分配的中间数据量,根据所述中间数据量生成数据分配信息并发送至所述hive,由所述hive根据所述数据分配信息将所述中间数据平均分配至各所述reduce,以利用所述reduce进行中间数据的写出。
9.一种数据处理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905566.9A CN113360481B (zh) | 2021-08-09 | 2021-08-09 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110905566.9A CN113360481B (zh) | 2021-08-09 | 2021-08-09 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360481A CN113360481A (zh) | 2021-09-07 |
CN113360481B true CN113360481B (zh) | 2021-10-15 |
Family
ID=77540736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110905566.9A Active CN113360481B (zh) | 2021-08-09 | 2021-08-09 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360481B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203248B (zh) * | 2022-09-14 | 2022-12-13 | 云和恩墨(北京)信息技术有限公司 | 数据库表空间的快速查询方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799622B (zh) * | 2012-06-19 | 2015-07-15 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN110442433B (zh) * | 2019-06-28 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种执行sql任务的方法、设备以及存储介质 |
CN111427911A (zh) * | 2020-03-25 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN112035481B (zh) * | 2020-08-31 | 2023-10-27 | 中国平安财产保险股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
-
2021
- 2021-08-09 CN CN202110905566.9A patent/CN113360481B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113360481A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113094136A (zh) | 页面显示控制方法、装置、存储介质及电子设备 | |
CN109684079B (zh) | 显示数据处理方法、装置以及电子设备 | |
US9882982B2 (en) | Datastore for aggregated measurements for metrics | |
CN111324606B (zh) | 数据分片的方法及装置 | |
CN113360481B (zh) | 一种数据处理方法、装置、设备及计算机可读存储介质 | |
CN115373835A (zh) | Flink集群的任务资源调整方法、装置及电子设备 | |
US20150112957A1 (en) | Optimize follower and search relevancy ratio | |
CN110134738A (zh) | 分布式存储系统资源预估方法、装置 | |
US10313261B1 (en) | Tenant assignment system | |
CN108959458B (zh) | 数据生成和使用方法、系统、介质及计算机设备 | |
CN112115160B (zh) | 一种查询请求的调度方法、装置及计算机系统 | |
CN111600771B (zh) | 网络资源探测系统、方法 | |
CN109213743B (zh) | 一种数据查询方法和装置 | |
US11340941B2 (en) | Tool for viewing jobs managed by heterogeneous job schedulers | |
US8918410B2 (en) | System and method for fast identification of variable roles during initial data exploration | |
CN110990476B (zh) | 数据导入方法、装置、服务器及存储介质 | |
CN113761856A (zh) | 一种数据处理方法和装置 | |
CN109408544B (zh) | 基于引擎的数据聚合方法、装置及存储介质、服务器 | |
US20200341880A1 (en) | System For Automatically Evaluating A Change In A Large Population Of Processing Jobs | |
CN112799820A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN112749055A (zh) | 资源消耗计量方法、装置、电子设备及存储介质 | |
US10109019B2 (en) | Accelerated disaggregation in accounting calculation via pinpoint queries | |
CN112433838A (zh) | 批量调度方法、装置、设备及计算机存储介质 | |
US7721287B2 (en) | Organizing transmission of repository data | |
CN117055821B (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 |