CN110196858A - 一种基于Hive Mutation API进行数据更新的方法 - Google Patents
一种基于Hive Mutation API进行数据更新的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000035772 mutation Effects 0.000 title claims abstract description 11
- 239000008186 active pharmaceutical agent Substances 0.000 claims abstract description 10
- 239000003471 mutagenic agent Substances 0.000 claims abstract description 8
- 239000002253 acid Substances 0.000 claims description 18
- 241000208340 Araliaceae Species 0.000 claims description 7
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 7
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 7
- 235000008434 ginseng Nutrition 0.000 claims description 7
- 238000005192 partition Methods 0.000 claims description 5
- 230000008676 import Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011056 performance test Methods 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/283—Multi-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进行数据更新的方法,涉及数据更新技术领域。
背景技术
大数据环境下,数据量日益增长,业务上对数据的备份及数据更新的需求越来越显著。现有的数据存储技术,将源数据从关系型数据库,如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协调器接口进行数据更新。
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)
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)
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的多用户数据资产权限安全访问控制方法 |
-
2019
- 2019-06-05 CN CN201910485258.8A patent/CN110196858B/zh active Active
Patent Citations (3)
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)
Title |
---|
张东等: "云海大数据一体机体系结构和关键技术", 《计算机研究与发展》 * |
陈逸然等: "基于云计算系统的空间查询处理方法", 《测绘科学》 * |
Cited By (6)
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 |