一种Hive调度方法及装置的制造方法

文档序号:8412567阅读:440来源:国知局
一种Hive调度方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种Hive调度方法及装置。
【背景技术】
[0002]随着信息数据量的增大,为了进一步挖掘数据资源、为了决策需要而产生了数据仓库。同时在分析海量数据场景下,由于单台服务器的处理能力限制,数据分析者通常采用分布式计算模式。Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL存储或查询功能,可以将SQL语句转换为MapReduce任务进行运行。利用Hadoop集群优势,执行MapReduce任务,将大数据自动分拆成数据段到集群中的每个机器中,并行运行,可以几何倍数的增加工作效率。
[0003]现有技术中,用户在对Hive中的数据进行操作时,需要将操作编写成对应的SQL语句,将SQL语句输入到Hive中,当对当前的Hive执行下一个操作时,等待上一个操作执行完成后,将编写的SQL语句输入到Hive中。
[0004]通过上述描述可见,现有技术中,用户对Hive的操作需要将编写的SQL语句输入到Hive中,并在上一个SQL语句的操作执行完成后才能执行下一个SQL语句的操作,对Hive中的操作较复杂。

【发明内容】

[0005]有鉴于此,本发明提供了一种Hive调度方法及装置,能够降低对Hive操作的复杂度。
[0006]一方面,本发明提供了一种Hive调度方法,包括:预先创建用于实现Quartz中的org.quartz.Job 接口 的 HiveJob Java 类,还包括:
[0007]S1:创建至少一个Hive程序;
[0008]S2:确定每个所述Hive程序的执行时间;
[0009]S3:根据每个所述Hive程序的执行时间,建立Hive程序与所述执行时间的关联关系;
[0010]S4:根据所述关联关系,通过Quartz中的调度程序调用HiveJob中的执行方法,执行当前的执行时间对应的Hive程序。
[0011]进一步地,所述S3包括:
[0012]根据每个所述Hive程序的执行时间,在所述Quartz的调度时间表中,建立Hive程序与所述执行时间的关联关系;
[0013]所述S4,包括:
[0014]根据所述调度时间表,通过Quartz中的调度程序调用HiveJob中的执行方法,执行当前的执行时间对应的Hive程序。
[0015]进一步地,还包括:预先创建用于执行所述Hive程序的脚本;
[0016]所述S4,包括:
[0017]根据所述关联关系,通过Quartz中的调度程序调用HiveJob中的执行方法,通过所述执行方法调用所述脚本运行当前执行时间对应的Hive程序。
[0018]进一步地,所述SI,包括:
[0019]通过SQL语句创建至少一个Hive程序;
[0020]和/或,在所述S4之后还包括:将所述Hive程序转换成MapReduce任务运行。
[0021]进一步地,在所述SI之前,还包括:
[0022]预先在所述Hive中创建当前租户的项目空间,在所述项目空间中创建Hive表,其中,所述项目空间的名称在Hive中是唯一的;
[0023]所述S4中执行当前的执行时间对应的Hive程序,包括:
[0024]执行当前的执行时间对应的Hive程序对所述项目空间中的Hive表进行操作。
[0025]另一方面,本发明提供了一种Hive调度装置,包括:
[0026]第一创建单元,用于创建用于实现Quartz中的org.quartz.Job接口的HiveJobJava 类
[0027]第二创建单元,用于创建至少一个Hive程序;
[0028]确定单元,用于确定每个所述Hive程序的执行时间;
[0029]建立单元,用于根据每个所述Hive程序的执行时间,建立Hive程序与所述执行时间的关联关系;
[0030]执行单元,用于根据所述关联关系,通过Quartz中的调度程序调用HiveJob中的执行方法,执行当前的执行时间对应的Hive程序。
[0031]进一步地,所述建立单元,用于根据每个所述Hive程序的执行时间,在所述Quartz的调度时间表中,建立Hive程序与所述执行时间的关联关系;
[0032]所述执行单元,用于根据所述调度时间表,通过Quartz中的调度程序调用HiveJob中的执行方法,执行当前的执行时间对应的Hive程序。
[0033]进一步地,第三创建单元,用于创建用于执行所述Hive程序的脚本;
[0034]所述执行单元,用于根据所述关联关系,通过Quartz中的调度程序调用HiveJob中的执行方法,通过所述执行方法调用所述脚本运行当前执行时间对应的Hive程序。
[0035]进一步地,所述第二创建单元,用于通过SQL语句创建至少一个Hive程序;
[0036]和/或,还包括:转换单元,用于将所述Hive程序转换成MapReduce任务运行。
[0037]进一步地,还包括:
[0038]第四创建单元,用于预先在所述Hive中创建当前租户的项目空间,在所述项目空间中创建Hive表,其中,所述项目空间的名称在Hive中是唯一的;
[0039]所述执行单元,用于执行当前的执行时间对应的Hive程序对所述项目空间中的Hive表进行操作。
[0040]本发明实施例提供了一种Hive调度方法及装置,为每个Hive程序设置对应的执行时间,通过Quartz中的org.quartz.Job接口安装执行时间调用对应的Hive程序,实现对Hive的操作,每个Hive程序能够在对应的执行时间自动执行,无需等到上一个Hive程序执行完成后,再输入下一个Hive程序,操作简单。
【附图说明】
[0041]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0042]图1是本发明一实施例提供的一种Hive调度方法的流程图;
[0043]图2是本发明一实施例提供的另一种Hive调度方法的流程图;
[0044]图3是本发明一实施例提供的一种Hive调度装置的示意图;
[0045]图4是本发明一实施例提供的另一种Hive调度装置的示意图。
【具体实施方式】
[0046]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047]如图1所示,本发明实施例提供了一种Hive调度方法,该方法可以包括以下步骤:
[0048]SO:预先创建用于实现 Quartz 中的 org.quartz.Job 接口的 HiveJob Java 类;
[0049]S1:创建至少一个Hive程序;
[0050]S2:确定每个所述Hive程序的执行时间;
[0051]S3:根据每个所述Hive程序的执行时间,建立Hive程序与所述执行时间的关联关系;
[0052]S4:根据所述关联关系,通过Quartz中的调度程序调用HiveJob中的执行方法,执行当前的执行时间对应的Hive程序。
[0053]本发明实施例提供了一种Hive调度方法,为每个Hive程序设置对应的执行时间,通过Quartz中的org.quartz.Job接口安装执行时间调用对应的Hive程序,实现对Hive的操作,每个Hive程序能够在对应的执行时间自动执行,无需等到上一个Hive程序执行完成后,再输入下一个Hive程序,操作简单。
[0054]在一种可能的实现方式中,可以通过Quartz的调度时间表将Quartz与Hive结合起来。
[0055]所述S3包括:根据每个所述Hive程序的执行时间,在所述Quartz的调度时间表中,建立Hive程序与所述执行时间的关联关系;
[0056]所述S4,包括:根据所述调度时间表,通过Quartz中的调度程序调用HiveJob中的执行方法,执行当前的执行时间对应的Hive程序。
[0057]通过执行方法来调用对应的Hive程序。调度时间表中可以保存Hive的标识,该Hive的标识可以是Hive的名称,通过Hive的标识与执行时间关联起来。
[0058]为了使代码更加简便,并且有很好的交互性,Hive程序的执行可以通过调用脚本的方式完成。这种方式使得开发人员在Hive之上完成功能开发,而不需要对Hive有很深的专业知识。
[0059]该方法还包括:预先创建用于执行所述Hive程序的脚本;
[0060]所述S4,包括:根据所述关联关系,通过Quartz中的调度程序调用HiveJob中的执行方法,调用所述脚本运行当前执行时间对应的Hive程序。
[0061]在一种可能的实现方式中,为租户创建项目空间,项目空间类似Hive数据库,每个租户可以有多个项目空间,项目空间名称具有唯一性,各租户的项目空间名称不能重复,用于实现对多租户的任务的隔离。租户进入项目空间创建Hive表,Hive表的数据实际都存储到 HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)中。在所述 SI之前,还包括:预先在所述Hive中创建当前租户的项目空间,在所述项目空间中创建Hive表,其中,所述项目空间的名称在Hive中是唯一的;
[0062]所述S4中执行当前的执行时间对应的Hive程序,包括:
[0063]执行当前的执行时间对应的Hive程序对所述项目空间中的Hive表进行操作。
[0064]每个租户只是对其项目空间中的Hive表进行操作,不能对其他租户的Hive进行操作,通过项目空间的名称的唯一性能够实现不同租户的操作的隔离。
[0065]为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
[0066]如图2所示,本发明实施例提供了一种Hive调度方法,该方法可以包括以下步骤:
[0067]步骤201:预先在所述Hive中创建当前租户的项目空间,在所述项目空间中创建Hive表,预先创建用于执行所述Hive程序的脚本,预先创建用于实现Quartz中的org.quartz.Job接口的HiveJob Java类,其中,所述项目空间的名称在Hive中是唯一的。
[0068]在该步骤中,创建一个实现Quartz框架中org.quartz.Job接口的Java类HiveJob, HiveJob中包含唯一的执行方法execute O。
[0069]步骤202:创建至少一个Hive程序。
[0070]该步骤可以通过以下方式实现:通过SQL语句创建至少一个Hive程序。为了方便查找Hive程序,可以将Hive程序按文件夹进行分类。通过Hive程序可以对于存储到HDFS中的数据进行存储、查询和计算操作。程序管理将这些操作数据的Hive程序保存到数据库。
[
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1