CN110196858A - 一种基于Hive Mutation API进行数据更新的方法 - Google Patents

一种基于Hive Mutation API进行数据更新的方法 Download PDF

Info

Publication number
CN110196858A
CN110196858A CN201910485258.8A CN201910485258A CN110196858A CN 110196858 A CN110196858 A CN 110196858A CN 201910485258 A CN201910485258 A CN 201910485258A CN 110196858 A CN110196858 A CN 110196858A
Authority
CN
China
Prior art keywords
data
update
new
hive
bucket
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.)
Granted
Application number
CN201910485258.8A
Other languages
English (en)
Other versions
CN110196858B (zh
Inventor
魏峥
刘传涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Group Co Ltd
Original Assignee
Inspur Software Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201910485258.8A priority Critical patent/CN110196858B/zh
Publication of CN110196858A publication Critical patent/CN110196858A/zh
Application granted granted Critical
Publication of CN110196858B publication Critical patent/CN110196858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于Hive Mutation API进行数据更新的方法,涉及数据更新技术领域;创建Mutator客户端,连接到Hive metastore,创建数据更新事务,计算需要更新的数据,读取虚拟主键,对需要写入的更新数据进行排序,获取原始数据与需要写入的更新数据合并为新的更新数据,调用接口进行数据更新,与现有技术相比,提高了Hive数据更新的性能,摆脱了Hive更新时需要删除原数据再重新导入的状况。

Description

一种基于Hive Mutation API进行数据更新的方法
技术领域
本发明公开一种基于Hive Mutation API进行数据更新的方法,涉及数据更新技术领域。
背景技术
大数据环境下,数据量日益增长,业务上对数据的备份及数据更新的需求越来越显著。现有的数据存储技术,将源数据从关系型数据库,如oracle、mysql等,抽取到Hive数据仓库后,对数据更新的支持并不完善。现有技术针对Hive数据仓库需要进行数据更新的情况,一般采取的方案是:将某个分区的数据删除掉,再重新导入。一旦当关系型数据库的原始数据存在数据更新,为了保证数据的一致性,现有技术会将Hive数据表的某个分区甚至整张数据表全部删掉,再将关系型数据库的数据重新抽取到数据仓库。如此耗费了较多时间和资源,并且当关系型数据库更新比较频繁时,这种将数据删除重新导入的方法显然不能满足业务需求,数据一致性很难保证。
为了解决Hive数据更新存在的问题,本发明提供了一种基于Hive Mutation API进行数据更新的方法,可以指定Hive数据表中的数据进行更新,解决了现有的Hive数据更新时,只能删除整个分区再重新写入的问题,提高了数据更新的性能,保证了数据一致性。
发明内容
本发明针对现有技术的问题,提供一种基于Hive Mutation API进行数据更新的方法,利用Hive Mutation API,实现了Hive进行数据更新,解决Hive难以进行数据更新的问题。
本发明提出的具体方案是:
一种基于Hive Mutation API进行数据更新的方法:
创建Hive的行级ACID事务桶表,配置Hive相关配置文件,
创建Mutator客户端,连接到Hive metastore,创建数据更新事务,获取ACID事务桶表,开始数据更新准备,计算需要更新的数据,读取虚拟主键,对需要写入的更新数据进行排序,获取原始数据与需要写入的更新数据合并为新的更新数据,调用接口进行数据更新,数据更新完成提交数据更新事务,关闭客户端。
所述的方法中虚拟主键包括bucket Id和row Id,虚拟主键利用bucket Id将需要写入的更新数据进行排序,虚拟主键利用row Id识别ACID事务桶表中的记录,获取原始数据与需要写入的更新数据合并为新的更新数据,新的更新数据根据row Id进行排序。
所述的方法中创建Hive的行级ACID事务桶表,通过建表语句clustered by确定分桶字段,into确定分桶个数,且分桶字段不可更新。
所述的方法中配置连接信息,设置metastore连接的URI,数据库名称,数据表名称,数据表所在分区,分区数据,以便Mutator客户端连接到Hive metastore。
所述的方法中数据更新事务读取分区数据及虚拟主键时,Hive设置数据表所在分区的HDFS路径,获取行级ACID事务桶表的分桶个数,设置数据表字段名称,字段类型。
所述的方法中计算需要更新的数据,将新的更新的数据和虚拟主键组成一条数据更新记录,多条一次性数据更新记录放置在List集合列表里。
所述的方法中对List集合列表中的记录根据虚拟主键进行排序和分组。
所述的方法中如果计算需要更新的数据时,传参是某几列需要更新的字段,则查询虚拟主键时将一条记录的所有列查询出来,将需要更新的字段替换掉再更新;如果传参为一条记录的所有列,则只将虚拟主键查询出来,与传参构成一条完整的数据更新记录。
所述的方法中将List集合列表转换成Java Bean,利用Java反射机制将Object对象转换成Java Bean对象。
所述的方法中创建行级ACID事务桶表的MutatorCoordinator协调器,
调用MutatorCoordinator协调器接口进行数据更新。
本发明的有益之处是:
本发明提供一种基于Hive Mutation API进行数据更新的方法,创建Mutator客户端,连接到Hive metastore,创建数据更新事务,计算需要更新的数据,读取虚拟主键,对需要写入的更新数据进行排序,获取原始数据与需要写入的更新数据合并为新的更新数据,调用接口进行数据更新,与现有技术相比,提高了Hive数据更新的性能,摆脱了Hive更新时需要删除原数据再重新导入的状况。
附图说明
图1是本发明方法流程示意图;
图2是本发明Hive更新性能数据对照图。
具体实施方式
本发明提供一种基于Hive Mutation API进行数据更新的方法:
创建Hive的行级ACID事务桶表,配置Hive相关配置文件,
创建Mutator客户端,连接到Hive metastore,创建数据更新事务,获取ACID事务桶表,开始数据更新准备,计算需要更新的数据,读取虚拟主键,对需要写入的更新数据进行排序,获取原始数据与需要写入的更新数据合并为新的更新数据,调用接口进行数据更新,数据更新完成提交数据更新事务,关闭客户端。
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
利用本发明方法对1-100列数据表作了性能测试,更新数据量为200万条,具体过程如下:
创建Hive的行级ACID事务桶表,通过建表语句clustered by确定分桶字段,into确定分桶个数,且分桶字段不可更新,
配置Hive相关配置文件,Hive相关配置文件包括core-site.xml,hdfs-site.xml,hive-site.xml等,配置后,通过连接Hive的Metastore元数据模块,进行数据更新;
创建MutatorClient客户端,用来管理目标ACID表的事务,
配置连接信息,具体包括设置metastore连接的URI,数据库名称,数据表名称,数据表所在分区,更新的分区数据等,客户端连接到Hive metastore,
创建数据更新事务,获取ACID事务桶表,设置数据表所在分区的HDFS路径,设置事务桶表的分桶个数,设置数据表字段名称,字段类型等,开始数据更新准备,
计算需要更新的数据,读取虚拟主键,虚拟主键除bucketId,rowId外,还可包括transactionId,虚拟主键可利用bucket Id将需要写入的更新数据进行排序,虚拟主键利用row Id识别ACID事务桶表中的记录,获取原始数据与需要写入的更新数据合并为新的更新数据,新的更新数据与虚拟主键可组成一条完整的数据更新记录,如果一次性更新多条数据更新记录,则将多条数据更新记录放到List集合列表里,这样多条更新记录存放的数据结构为List<Object>的集合列表,其中Object对象包括数据表的所有列以及该条记录对应的虚拟主键,
在计算需要更新的数据时,如果传参是某几列需要更新的字段,则查询虚拟主键时将一条记录的所有列查询出来,将需要更新的字段替换掉再更新;如果传参为一条记录的所有列,则只将虚拟主键查询出来,与传参构成一条完整的数据更新记录,根据虚拟主键的row Id可对List集合列表进行排序,分组,
可将List集合列表转换成Java Bean,利用Java反射机制将Object转换成JavaBean对象;
创建MutatorCoordinator协调器,调用insert、update接口进行数据写入或更新,
写入前给写入的记录增加bucket id,通过BucketIdResolver可以得到bucketid,根据bucket id对写入数据排序分组,调用insert接口写入数据,
更新数据时,利用虚拟主键查询数据更新记录,调用update接口进行数据更新;完成写入或更新,关闭MutatorCoordinator,将Mutator客户端创建的事务提交,关闭客户端连接,数据更新结束。
通过实践,验证了该技术完全满足对数据更新的需求,优于以往的处理方案。对1-100列数据表作了性能测试,更新数据量为200万条。通过性能测试得到如图2Hive更新性能结果。对于100列以内的数据表,其更新性能达到2万条/秒-20万条/秒。如图2,横轴为Hive数据表列的个数,纵轴为每秒更新条数。表1为Hive更新时间、数据所占空间大小、更新性能等更细粒度的结果展示。
表1
Hive表列数 更新时间(秒) Hive表数据大小 更新性能(条/秒)
1 11 123.6M 200000
10 17 255.3M 117647
20 27 400.0M 74074
30 32 548.6M 62500
40 43 696.9M 46511
50 48 828.6M 41666
60 54 973.9M 37037
70 67 1.1G 31250
80 68 1.2G 29412
90 89 1.4G 22472
100 101 1.5G 19608
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

Claims (10)

1.一种基于Hive Mutation API进行数据更新的方法,其特征是
创建Hive的行级ACID事务桶表,配置Hive相关配置文件,
创建Mutator客户端,连接到Hive metastore,创建数据更新事务,获取ACID事务桶表,开始数据更新准备,计算需要更新的数据,读取虚拟主键,对需要写入的更新数据进行排序,获取原始数据与需要写入的更新数据合并为新的更新数据,调用接口进行数据更新,数据更新完成提交数据更新事务,关闭客户端。
2.根据权利要求1所述的方法,其特征是虚拟主键包括bucket Id和row Id,虚拟主键利用bucket Id将需要写入的更新数据进行排序,虚拟主键利用row Id识别ACID事务桶表中的记录,获取原始数据与需要写入的更新数据合并为新的更新数据,新的更新数据根据row Id进行排序。
3.根据权利要求1或2所述的方法,其特征是创建Hive的行级ACID事务桶表,通过建表语句clustered by确定分桶字段,into确定分桶个数,且分桶字段不可更新。
4.根据权利要求3所述的方法,其特征是配置连接信息,设置metastore连接的URI,数据库名称,数据表名称,数据表所在分区,分区数据,以便Mutator客户端连接到Hivemetastore。
5.根据权利要求4所述的方法,其特征是数据更新事务读取分区数据及虚拟主键时,Hive设置数据表所在分区的HDFS路径,获取行级ACID事务桶表的分桶个数,设置数据表字段名称,字段类型。
6.根据权利要求1或5所述的方法,其特征是计算需要更新的数据,将新的更新的数据和虚拟主键组成一条数据更新记录,多条一次性数据更新记录放置在List集合列表里。
7.根据权利要求6所述的方法,其特征是对List集合列表中的记录根据虚拟主键进行排序和分组。
8.根据权利要求7所述的方法,其特征是如果计算需要更新的数据时,传参是某几列需要更新的字段,则查询虚拟主键时将一条记录的所有列查询出来,将需要更新的字段替换掉再更新;如果传参为一条记录的所有列,则只将虚拟主键查询出来,与传参构成一条完整的数据更新记录。
9.根据权利要求8所述的方法,其特征是将List集合列表转换成Java Bean,利用Java反射机制将Object对象转换成Java Bean对象。
10.根据权利要求1或9所述的方法,其特征是创建行级ACID事务桶表的MutatorCoordinator协调器,调用MutatorCoordinator协调器接口进行数据更新。
CN201910485258.8A 2019-06-05 2019-06-05 一种基于Hive Mutation API进行数据更新的方法 Active CN110196858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910485258.8A CN110196858B (zh) 2019-06-05 2019-06-05 一种基于Hive Mutation API进行数据更新的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910485258.8A CN110196858B (zh) 2019-06-05 2019-06-05 一种基于Hive Mutation API进行数据更新的方法

Publications (2)

Publication Number Publication Date
CN110196858A true CN110196858A (zh) 2019-09-03
CN110196858B CN110196858B (zh) 2023-06-09

Family

ID=67753968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910485258.8A Active CN110196858B (zh) 2019-06-05 2019-06-05 一种基于Hive Mutation API进行数据更新的方法

Country Status (1)

Country Link
CN (1) CN110196858B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647535A (zh) * 2019-09-23 2020-01-03 浪潮软件集团有限公司 一种将业务数据更新至Hive的方法、终端及存储介质
CN112445776A (zh) * 2020-11-20 2021-03-05 北京易观智库网络科技有限公司 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN112800073A (zh) * 2021-01-27 2021-05-14 浪潮云信息技术股份公司 一种基于NiFi更新Delta Lake的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110073277A (ko) * 2009-12-23 2011-06-29 엘지전자 주식회사 고정 자원 할당에서 acid를 할당하기 위한 방법 및 장치
CN108958959A (zh) * 2017-05-18 2018-12-07 北京京东尚科信息技术有限公司 检测hive数据表的方法和装置
CN108959867A (zh) * 2018-06-05 2018-12-07 浙江大学 一种基于Hive Matedata的多用户数据资产权限安全访问控制方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110073277A (ko) * 2009-12-23 2011-06-29 엘지전자 주식회사 고정 자원 할당에서 acid를 할당하기 위한 방법 및 장치
CN108958959A (zh) * 2017-05-18 2018-12-07 北京京东尚科信息技术有限公司 检测hive数据表的方法和装置
CN108959867A (zh) * 2018-06-05 2018-12-07 浙江大学 一种基于Hive Matedata的多用户数据资产权限安全访问控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张东等: "云海大数据一体机体系结构和关键技术", 《计算机研究与发展》 *
陈逸然等: "基于云计算系统的空间查询处理方法", 《测绘科学》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647535A (zh) * 2019-09-23 2020-01-03 浪潮软件集团有限公司 一种将业务数据更新至Hive的方法、终端及存储介质
CN110647535B (zh) * 2019-09-23 2023-06-09 浪潮软件集团有限公司 一种将业务数据更新至Hive的方法、终端及存储介质
CN112445776A (zh) * 2020-11-20 2021-03-05 北京易观智库网络科技有限公司 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN112445776B (zh) * 2020-11-20 2022-12-20 北京易观智库网络科技有限公司 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN112800073A (zh) * 2021-01-27 2021-05-14 浪潮云信息技术股份公司 一种基于NiFi更新Delta Lake的方法
CN112800073B (zh) * 2021-01-27 2023-03-28 浪潮云信息技术股份公司 一种基于NiFi更新Delta Lake的方法

Also Published As

Publication number Publication date
CN110196858B (zh) 2023-06-09

Similar Documents

Publication Publication Date Title
KR102315497B1 (ko) 채점 모델을 구축하고 사용자 신용을 평가하기 위한 방법 및 디바이스
CN110196858A (zh) 一种基于Hive Mutation API进行数据更新的方法
US8799235B2 (en) Data de-duplication system
CN110442585B (zh) 数据更新方法、数据更新装置、计算机设备及存储介质
CN109739828B (zh) 一种数据处理方法、设备及计算机可读存储介质
CN112650736B (zh) 一种数据迁移方法及装置
CN108062314B (zh) 动态分表数据处理方法和装置
CN102779088B (zh) 事务处理设备、事务处理方法及事务处理程序
CN113468107A (zh) 数据处理方法、设备、存储介质及系统
CN109918386A (zh) 一种数据恢复方法和装置、计算机可读存储介质
CN113760910A (zh) 一种数据同步的方法及装置
CN114153891A (zh) 一种时间序列数据处理方法
CN106383897B (zh) 数据库容量计算方法和装置
CN101063976B (zh) 用于快速删除物理群集数据的方法和设备
CN116166849A (zh) 一种数据管理方法、装置、设备及存储介质
CN114297196A (zh) 元数据存储方法、装置、电子设备及存储介质
CN111414422B (zh) 一种数据分布方法、装置、设备和存储介质
CN111694853B (zh) 基于世系的数据增量采集方法、装置、存储介质和电子设备
KR101171551B1 (ko) 이벤트 이력 기억 장치, 이벤트 이력 추적 장치, 이벤트 이력 기억 방법, 이벤트 이력 기억 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 데이터 구조를 기록한 컴퓨터 판독 가능한 기록 매체
Groeneveld et al. TheSNPpit—a high performance database system for managing large scale SNP data
US10747438B1 (en) Reporting using archived data
CN113391916A (zh) 组织架构数据处理方法、装置、计算机设备和存储介质
Beheshti et al. Morse's Markov model of book use revisited
CN114153857A (zh) 数据同步方法、数据同步装置和计算机可读存储介质
CN114510491A (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