一种基于Hive支持多字符作为分隔符的方法技术

技术编号:17110041 阅读:38 留言:0更新日期:2018-01-24 22:32
本发明专利技术提供一种基于Hive支持多字符作为分隔符的方法,创建用户自定义分隔符模块,基于用户自定义分隔符模块创建用户自定义分隔符;获取用户自定义的分隔符;根据用户自定义的分隔符对数据进行分割,并将具有用户自定义分隔符的数据进行存储,使得数据仓库支持多字符作为分隔符,对Hive进行改进,支持多字符作为分隔符。

A method based on Hive to support multiple characters as delimiters

【技术实现步骤摘要】
一种基于Hive支持多字符作为分隔符的方法
本专利技术涉及数据库领域,尤其涉及一种基于Hive支持多字符作为分隔符的方法。
技术介绍
ApacheHive是建立在Hadoop之上的数据仓库,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。由于SQL被广泛的应用在数据仓库中,因此,Hive专门针对自身特性设计了类SQL的查询语言。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。但是Hive只支持单字符作为分隔符,而实际应用中会使用多个字符作为分隔符,这样造成使用Hive的局限性,给Hive的开发使用带来不便。
技术实现思路
为了克服上述现有技术中的不足,本专利技术提供一种基于Hive支持多字符作为分隔符的方法,方法包括:创建用户自定义分隔符模块,基于用户自定义分隔符模块创建用户自定义分隔符;获取用户自定义的分隔符;根据用户自定义的分隔符对数据进行分割,并将具有用户自定义分隔符的数据进行存储。优选地,步骤创建用户自定义分隔符模块还包括:基于继承抽象模块的扩展,创建Hive中的MultiCharDelimitedSerde类,使得用户在创建用户自定义分隔符模块时,设置为MultiCharDelimitedSerde类,支持多字符作为分隔符。优选地,步骤用户在创建用户自定义分隔符模块时,设置为MultiCharDelimitedSerde类还包括:将用户创建的用户自定义分隔符模块设置为序列化和反序列化。优选地,步骤根据用户自定义的分隔符对数据进行分割还包括:获取待分隔的数据信息,按照第一预设数据划分格式对待分隔的数据信息进行分割,分割成若干个第一分割数据部,在第一分割数据部与第一分割数据部之间设置用户自定义分隔符模块创建的第一自定义分隔符;按照第二预设数据划分格式对第一分割数据部进行分割,分割成若干个第二分割数据部,在第二分割数据部与第二分割数据部之间设置用户自定义分隔符模块创建的第二自定义分隔符;按照第三预设数据划分格式对第二分割数据部进行分割,分割成若干个第三分割数据部,在第三分割数据部与第三分割数据部之间设置用户自定义分隔符模块创建的第三自定义分隔符。优选地,第一预设数据划分格式的分隔区间大于第二预设数据划分格式,第二预设数据划分格式分隔区间大于第三预设数据划分格式;分隔区间采用位为单位区间,或字节为单位区间,或KB为单位区间,或B为单位区间,或为MB为单位区间。优选地,步骤用户自定义分隔符模块创建用户自定义分隔符还包括:设置用户自定义分隔符的序列化及反序列化规则;基于序列化及反序列化规则对用户自定义分隔符进行序列化及反序列化处理;创建用户自定义分隔符的序列化及反序列化对应表;将设置的用户自定义分隔符序列化及反序列化规则,用户自定义分隔符的序列化及反序列化对应表存储到对象列表中,供数据处理使用。优选地,将按照第一分割数据部,第二分割数据部,第三分割数据部分割后的数据信息,根据序列化及反序列化规则,进行序列化形成序列化数据;将序列化数据储存至数据库。从以上技术方案可以看出,本专利技术具有以下优点:基于Hive支持多字符作为分隔符的方法中,创建用户自定义分隔符模块,基于用户自定义分隔符模块创建用户自定义分隔符;获取用户自定义的分隔符;根据用户自定义的分隔符对数据进行分割,并将具有用户自定义分隔符的数据进行存储。使得数据仓库支持多字符作为分隔符,对Hive进行改进,支持多字符作为分隔符。附图说明为了更清楚地说明本专利技术的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为基于Hive支持多字符作为分隔符的方法流程图;图2为根据用户自定义的分隔符对数据进行分割步骤流程图;图3为用户自定义分隔符模块创建用户自定义分隔符步骤流程图;图4为基于Hive支持多字符作为分隔符的方法实施例流程图。具体实施方式为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将运用具体的实施例及附图,对本专利技术保护的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利保护的范围。本实施例提供一种基于Hive支持多字符作为分隔符的方法,如图1所示,方法包括:S1,创建用户自定义分隔符模块,基于用户自定义分隔符模块创建用户自定义分隔符;S2,获取用户自定义的分隔符;S3,根据用户自定义的分隔符对数据进行分割,并将具有用户自定义分隔符的数据进行存储。Hive中没有定义专门的数据格式,数据格式可以由用户指定。用户定义数据格式需要指定三个属性:分隔符、行分隔符以及读取文件数据的方法。基于Hive支持多字符作为分隔符的方法扩展了Hive中的分隔符。具体的,步骤创建用户自定义分隔符模块还包括:基于继承抽象模块的扩展,创建Hive中的MultiCharDelimitedSerde类,使得用户在创建用户自定义分隔符模块时,设置为MultiCharDelimitedSerde类,支持多字符作为分隔符。步骤用户在创建用户自定义分隔符模块时,设置为MultiCharDelimitedSerde类还包括:将用户创建的用户自定义分隔符模块设置为序列化和反序列化。本实施例中,如图2所示,步骤根据用户自定义的分隔符对数据进行分割还包括:S11,获取待分隔的数据信息,按照第一预设数据划分格式对待分隔的数据信息进行分割,分割成若干个第一分割数据部,在第一分割数据部与第一分割数据部之间设置用户自定义分隔符模块创建的第一自定义分隔符;S12,按照第二预设数据划分格式对第一分割数据部进行分割,分割成若干个第二分割数据部,在第二分割数据部与第二分割数据部之间设置用户自定义分隔符模块创建的第二自定义分隔符;S13,按照第三预设数据划分格式对第二分割数据部进行分割,分割成若干个第三分割数据部,在第三分割数据部与第三分割数据部之间设置用户自定义分隔符模块创建的第三自定义分隔符。第一预设数据划分格式的分隔区间大于第二预设数据划分格式,第二预设数据划分格式分隔区间大于第三预设数据划分格式;分隔区间采用位为单位区间,或字节为单位区间,或KB为单位区间,或B为单位区间,或为MB为单位区间。可以理解的是,将待分隔的数据信息向根据第一预设数据划分格式进行划分,在按照第二预设数据划分格式对第一分割数据部进行分割,之后再按照第三预设数据划分格式对第二分割数据部进行分割,以此类推,逐步递减。本实施例中,基于继承抽象模块的扩展为扩展AbstractSerde类,创建MultiCharDelimitedSerde类,用户在创建表时指定MultiCharDelimitedSerde为要用的序列化反序列化方法。定义分割行数据时所用分隔符参数“delimited”,定义对象列表“row”,用于存储每行中的各数据。实现方法getDelimited,用来获取创建表时输入的参数“field_delimited”,如果获取不到则抛出异常并退出。本文档来自技高网...
一种基于Hive支持多字符作为分隔符的方法

【技术保护点】
一种基于Hive支持多字符作为分隔符的方法,其特征在于,方法包括:创建用户自定义分隔符模块,基于用户自定义分隔符模块创建用户自定义分隔符;获取用户自定义的分隔符;根据用户自定义的分隔符对数据进行分割,并将具有用户自定义分隔符的数据进行存储。

【技术特征摘要】
1.一种基于Hive支持多字符作为分隔符的方法,其特征在于,方法包括:创建用户自定义分隔符模块,基于用户自定义分隔符模块创建用户自定义分隔符;获取用户自定义的分隔符;根据用户自定义的分隔符对数据进行分割,并将具有用户自定义分隔符的数据进行存储。2.根据权利要求1所述的基于Hive支持多字符作为分隔符的方法,其特征在于,步骤创建用户自定义分隔符模块还包括:基于继承抽象模块的扩展,创建Hive中的MultiCharDelimitedSerde类,使得用户在创建用户自定义分隔符模块时,设置为MultiCharDelimitedSerde类,支持多字符作为分隔符。3.根据权利要求2所述的基于Hive支持多字符作为分隔符的方法,其特征在于,步骤用户在创建用户自定义分隔符模块时,设置为MultiCharDelimitedSerde类还包括:将用户创建的用户自定义分隔符模块设置为序列化和反序列化。4.根据权利要求1所述的基于Hive支持多字符作为分隔符的方法,其特征在于,步骤根据用户自定义的分隔符对数据进行分割还包括:获取待分隔的数据信息,按照第一预设数据划分格式对待分隔的数据信息进行分割,分割成若干个第一分割数据部,在第一分割数据部与第一分割数据部之间设置用户自定义分隔符模块创建的第一自定义分隔符;按照第二预设数据划分格式对第一分割数据部进行分割,分割成若干个第二...

【专利技术属性】
技术研发人员:尚平平
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1