数据导入Phoenix的方法及装置制造方法及图纸

技术编号:24091196 阅读:25 留言:0更新日期:2020-05-09 08:09
本申请公开了一种数据导入Phoenix的方法及装置,该方法包括:读取Phoenix的元数据系统表,查找数据文件导入的目标Hbase表对应的Phoenix表在元数据系统表中的存储信息;根据所述存储信息确定与Phoenix表对应的目标Hbase表的类型;按照目标Hbase表的类型将数据文件转换为目标Hbase表对应的HDFS文件;将HDFS文件导入目标Hbase表对应的HDFS文件目录中。本申请可以减少数据导入Phoenix时占用的计算资源和IO资源,提高导入效率。

Method and device of data import into Phoenix

【技术实现步骤摘要】
数据导入Phoenix的方法及装置
本申请涉及数据处理
,尤其涉及一种数据导入Phoenix的方法及装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。Phoenix是构建在HBase上的一个结构化查询语言(StructuredQueryLanguage,SQL)框架组件,HBase是一个分布式的、面向列的开源数据库,其数据存储于分布式文件系统(HadoopDistributedFileSystem,HDFS)之上,有很好的备份机制,是适合于非结构化数据存储的数据库。Phonix的数据存储在Hbase中,可使用SQL语句来执行创建Hbase的表、删除表、插入更新数据、删除数据以及分析数据等操作,而不需要使用Hbase的API来操作表,因此Phoenix可以解决Hbase的客户端操作复杂的问题。Phoenix官方提供的Spark数据源接口可以将数据写入到Phoenix。在数据写入过程中,数据源的数据文件,经过处理后,形成多个Spark的分区(分区是Spark的最小的数据逻辑处理单元,一个分区对应Spark的一个任务(task)来处理),每个Spark分区均会请求一次Hbase的从节点RegionServer。在实际的数据导入到Phoenix场景中,由于数据文件非常多,或者数据文件大,将会产生很多的分区,相应的分区请求RegionServer的次数会比较多。这样Spark将频繁与RegionServer交互,会导致Hbase的主节点region频繁的分裂(split)和压缩(compact),split和compact都会占用大量的计算资源和输入/输出(Input/Output,IO)资源,这个过程还会导致短暂的服务中断,影响数据导入的效率,甚至可能会影响线上的Phoenix服务。
技术实现思路
本申请实施例提供一种数据导入Phoenix的方法,用以减少数据导入Phoenix时占用的计算资源和IO资源,提高导入效率,该方法包括:读取Phoenix的元数据系统表,查找数据文件导入的目标Hbase表对应的Phoenix表在元数据系统表中的存储信息;根据所述存储信息确定与Phoenix表对应的目标Hbase表的类型;按照目标Hbase表的类型将数据文件转换为目标Hbase表对应的HDFS文件;将HDFS文件导入目标Hbase表对应的HDFS文件目录中。本申请实施例还提供一种数据导入Phoenix的装置,用以减少数据导入Phoenix时占用的计算资源和IO资源,提高导入效率,该装置包括:查找模块,用于读取Phoenix的元数据系统表,查找数据文件导入的目标Hbase表对应的Phoenix表在元数据系统表中的存储信息;确定模块,用于根据所述查找模块查找得到的所述存储信息确定与Phoenix表对应的目标Hbase表的类型;转换模块,用于按照所述确定模块确定的目标Hbase表的类型将数据文件转换为目标Hbase表对应的HDFS文件;导入模块,用于将转换模块转换得到的HDFS文件导入目标Hbase表对应的HDFS文件目录中。本申请实施例中,根据Phoenix元数据系统表中存储的信息,确定数据文件导入的Hbase表的类型,并按照Hbase表的类型将数据文件转为为对应的HDFS文件,之后直接将HDFS文件导入HDFS文件目录下,从而实现数据文件快速导入Phoenix中,上述过程中不需要经过Spark与RegionServer频繁交互,导致Hbase的主节点region频繁的分裂(split)和压缩(compact)的过程,减少了数据导入Phoenix的过程中占用的计算资源和输入/输出IO资源,同时提高了导入效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本申请实施例中一种Hbase表中包含的数据的示意图;图2为本申请实施例中一种数据导入Phoenix的方法的流程图;图3为本申请实施例中一种示例性给出的Phoenix表的示意图;图4为本申请实施例中一种元数据系统表的示意图;图5为本申请实施例中一种Hbase表的示意图;图6为本申请实施例中一种包含本地索引的元数据系统表的示意图;图7为本申请实施例中另一种包含本地索引的Hbase表的示意图;图8为本申请实施例中一种包含全局索引的元数据系统表的示意图;图9(a)为本申请实施例中一种包含表数据的Hbase表的示意图;图9(b)为本申请实施例中一种索引Hbase表的示意图;图10为本申请实施例中一种转换的Hbase表的示意图;图11为本申请实施例中一种数据导入Phoenix的装置的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本申请实施例做进一步详细说明。在此,本申请的示意性实施例及其说明用于解释本申请,但并不作为对本申请的限定。下面将对Phoenix使用的Hbase数据库进行简要介绍。Hbase数据库中存储的是物理表,有独立的物理结构,查询的时候将相应的数据加载到内存。Hbase表是基于列存储的,查询的时候可以只扫描某一个列或者某几列,避免扫描所有数据,这样可以提升查询效率。Hbase表有一级索引rowkey,根据rowkey查询速度非常快。同时,Hbase提供了一个超大的内存hash表,搜索引擎通过这个hash表存储索引,也可以提升查询效率。Hbase数据库也存在缺陷,其不适用与有join、多级索引以及表关系复杂的应用场景。图1示例性的给出了Hbase表中数据,将图1中的Hbase数据转换为关系型数据库的表,如下表一所示:表一主键Cf1:ip(列名)Cf1:hid(列名)cf1:cnt(列名)1005:187.248.135.230187.248.135.23010051242:115.248.158.231115.248.158.2312423317:113.248.234.232113.248.234.2323172本申请实施例提供了一种数据导入Phoenix的方法,如图2所示,该方法包括步骤201至步骤204:步骤201、读取Phoenix的元数据系统表,查找数据文件导入的目标Hbase表对应的Phoenix表在元数据系统表中的存储信息。本申请给出了一张Phoenix表本文档来自技高网
...

【技术保护点】
1.一种数据导入Phoenix的方法,其特征在于,所述方法包括:/n读取Phoenix的元数据系统表,查找数据文件导入的目标Hbase表对应的Phoenix表在元数据系统表中的存储信息;/n根据所述存储信息确定与Phoenix表对应的目标Hbase表的类型;/n按照目标Hbase表的类型将数据文件转换为目标Hbase表对应的HDFS文件;/n将HDFS文件导入目标Hbase表对应的HDFS文件目录中。/n

【技术特征摘要】
1.一种数据导入Phoenix的方法,其特征在于,所述方法包括:
读取Phoenix的元数据系统表,查找数据文件导入的目标Hbase表对应的Phoenix表在元数据系统表中的存储信息;
根据所述存储信息确定与Phoenix表对应的目标Hbase表的类型;
按照目标Hbase表的类型将数据文件转换为目标Hbase表对应的HDFS文件;
将HDFS文件导入目标Hbase表对应的HDFS文件目录中。


2.根据权利要求1所述的方法,其特征在于,在读取Phoenix的元数据系统表之前,所述方法还包括:
获取用户对于索引的需求;
创建Phoenix表,并根据用户用于索引的需求确定创建索引以及创建的索引类型,或者不创建索引;
当Phoenix表和/或索引创建完成后,Phoenix表的表名和/或索引名称映射至Phoenix元数据系统表中,Phoenix表和/或索引对应的Hbase表自动生成。


3.根据权利要求2所述的方法,其特征在于,自动生成的Hbase表的类型包括三类,第一类是不包含索引且与Phoenix表同名的第一Hbase表,第二类是包含本地索引且与Phoenix表同名的第二Hbase表,第三类是包含全局索引且与全局索引的名称相同的第三Hbase表;
所述Phoenix表和/或索引对应的Hbase表自动生成,包括:
如果未创建索引,则生成一张第一Hbase表;
如果创建的索引为本地索引,则生成一张第二Hbase表;
如果创建的索引为全局索引,则生成一张第一Hbase表,以及数量与创建的全局索引的数量相同的第三Hbase表;
如果创建的索引中同时包含本地索引和全局索引,则生成一张第二Hbase表,以及数量与创建的全局索引的数量相同的第三Hbase表。


4.根据权利要求3所述的方法,其特征在于,根据所述存储信息确定与Phoenix表对应的目标Hbase表的类型,包括:
确定所述存储信息中是否包含索引名称;
如果不包含索引名称,则确定目标Hbase表为第一Hbase表;
如果包含至少一个索引名称,则根据每个索引名称查找Phoenix中是否存储与索引名称相同的Hbase表;
如果没有查找到与任何一个索引名称相同名称的Hbase表,则所述至少一个索引全部为本地索引,目标Hbase表为第二Hbase表;
如果查找到与至少一个索引名称中部分索引名称相同名称的Hbase表,则确定所述至少一个索引中同时包含本地索引和全局索引,目标Hbase表为一张第二Hbase表,以及数量与全局索引的数量相同的第三Hbase表;
如果查找到与至少一个索引名称中全部索引名称相同名称的Hbase表,则确定所述至少一个索引全部为全局索引,目标Hbase为一张第一Hbase表,以及数量与全局索引的数量相同的第三Hbase表。


5.根据权利要求4所述的方法,其特征在于,所述将数据文件转换为目标Hbase表对应的HDFS文件,包括:
如果目标Hbase表中包括第一Hbase表,则按照第一Hbase表对应的HDFS文件的格式将数据文件转换为第一HDFS文件;
如果目标Hbase表中包括第二Hbase表,则按照第二Hbase表对应的HDFS文件的格式将数据文件转换为第二HDFS文件;
如果目标Hbase表中包括第三Hbase表,则按照第三Hbase表对应的HDFS文件的格式将数据文件转换为第三HDFS文件。


6.根据权利要求5所述的方法,其特征在于,将HDFS文件导入目标Hbase表对应的HDFS文件目录中,包括:
将第一HDFS文件导入第一Hbase表对应的HDFS文件目录中;
将第二HDFS文件导入第二Hbase表对应的HDFS文件目录中;
将第三HDFS文件导入第三Hbase表对应的HDFS文件目录中。


7.根据权利要求1所述的方法,其特征在于,在读取Phoenix的元数据系统表之前,所述方法还包括:
继承Spark的数据源相关的接口和类RelationProvider、CreatableRelationProvider和DataSourceRegister;
重定义继承的接口和类中用于导入数据的算法shortName和createRelation,其中,重定义shortName算法返回的字符串;重定义creatRelation算法中sqlContext参数指示的上下文变量、mode参数指示的数据保存模式、parameters参数指示的外部传入的自定义参数以及data参数指示的待保存数据;
其中,算法shortName和createRelation用于将目标Hbase表导入Phoenix中。


8.一种数据导入Phoenix的装置,其特征在于,所述装置包括:
查找模块,用于读取Phoenix的...

【专利技术属性】
技术研发人员:周朝卫
申请(专利权)人:中盈优创资讯科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1