CN111159235A - 数据预分区方法、装置、电子设备及可读存储介质 - Google Patents
数据预分区方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN111159235A CN111159235A CN201911321136.1A CN201911321136A CN111159235A CN 111159235 A CN111159235 A CN 111159235A CN 201911321136 A CN201911321136 A CN 201911321136A CN 111159235 A CN111159235 A CN 111159235A
- Authority
- CN
- China
- Prior art keywords
- data
- row key
- target
- partition
- target row
- 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.)
- Pending
Links
Images
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据预分区方法、装置、电子设备及可读存储介质,应用于大数据技术领域,其中该方法包括:通过Spark‑sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark‑sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
Description
技术领域
本申请涉及大数据技术领域,具体而言,本申请涉及一种数据预分区方法、装置、电子设备及可读存储介质。
背景技术
金融业特别是银行业为代表的传统巨头企业,其业务种类复杂度高、客户指标维度多、客户群体总量大、交易流水大,客户360视图或者历时流水查询等数据多达几百维度,体量多达数亿客户、万亿级数据。
主流的用于查询交易的分布式、面向列的Hbase常用语解决上述问题,但是由于数据分布不均匀,高并发交易下常因热点问题而造成交易性能较低。现在常见的处理办法是创建hash散列rowkey,然后做到数据均匀分布,但是,Hash散列rowkey能比较好的优化数据分布,但是查询的时候需要进行转义、且Hash其存在本身也占用空间,所以本身效率不是最佳且浪费资源。因此,大批量的数据的合理存储成为了一个问题。
发明内容
本申请提供了一种数据预分区方法、装置、电子设备及可读存储介质,用于实现大规模数据的均匀存储,避免出现数据倾斜现象,本申请采用的技术方案如下:
第一方面,提供了一种数据预分区方法,该方法包括,
基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数;
基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键;
基于分区结果信息对Hbase数据库进行数据预分区。
可选地,基于接收的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,包括:
基于行键表名从目标Hive数据集中确定目标行键表;
基于行键列名从目标行键表中获取目标行键数据。
可选地,基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,包括:
对目标行键数据进行RDD化处理,得到RDD化处理后的目标行键数据;
基于RDD化处理后的目标行键数据进行排序处理,得到排序处理后的目标行键数据;
基于排序处理后的目标行键数据与预定分区数确定分区结果信息。
可选地,目标Hive数据集中数据的获取方式包括以下至少一项:
从多个Hive表中抽取目标行键数据得到目标Hive数据集;
从至少一个业务文件中抽取目标行键数据,并将得到的目标行键数据存储至HDFS***,以及将存储至HDFS***的目标行键数据映射为Hive表访问。
可选地,该方法还包括:
接收待存储目标数据的存储请求,待存储目标数据包含第二目标行键;
基于第二目标行键确定待存储目标数据对应的目标分区,并基于确定的目标分区将待存储目标数据存储。
第二方面,提供了一种数据预分区装置,该装置包括,
获取模块,用于基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数;
计算模块,用于基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键;
分区模块,用于基于分区结果信息对Hbase数据库进行数据预分区。
可选地,获取模块包括:
确定单元,用于基于行键表名从目标Hive数据集中确定目标行键表;
获取单元,用于基于行键列名从目标行键表中获取目标行键数据。
可选地,计算模块包括:
RDD处理单元,对目标行键数据进行RDD化处理,得到RDD化处理后的目标行键数据;
排序单元,用于基于RDD化处理后的目标行键数据进行排序处理,得到排序处理后的目标行键数据;
确定单元,用于基于排序处理后的目标行键数据与预定分区数确定分区结果信息。
可选地,目标Hive数据集中数据的获取方式包括以下至少一项:
从多个Hive表中抽取目标行键数据得到目标Hive数据集;
从至少一个业务文件中抽取目标行键数据,并将得到的目标行键数据存储至HDFS***,以及将存储至HDFS***的目标行键数据映射为Hive表访问。
可选地,该装置还包括:
接收模块,用于接收待存储目标数据的存储请求,待存储目标数据包含第二目标行键;
存储模块,用于基于第二目标行键确定待存储目标数据对应的目标分区,并基于确定的目标分区将待存储目标数据存储。
第三方面,提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行第一方面所示的数据预分区方法。
第四方面,提供了一种计算机可读存储介质,计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行第一方面所示的数据预分区方法。
本申请提供了一种数据预分区方法、装置、电子设备及可读存储介质,与现有技术通过Hash散列rowkey优化数据分布相比,本申请通过基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数,然后基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键,继而基于分区结果信息对Hbase数据库进行数据预分区。即通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark-sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的一种数据预分区方法的流程示意图;
图2为本申请实施例的一种数据预分区装置的结构示意图;
图3为本申请实施例的另一种数据预分区装置的结构示意图;
图4为本申请实施例的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,各实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
Spark:Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Hbase:HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储***”。
预分区:HBase提供了预分区功能,即用户可以在创建表的时候对表按照一定的规则分区。
本申请实施例提供了一数据预分区方法,应用于云服务器,如图1所示,该方法可以包括以下步骤:
步骤S101,基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数;
具体地,可以是传入4个参数,调用Spark进行分区迭代计算。其中传入参数可以是:参数1外部表名e_tbl_rowkey(即行键表名)、参数2rowkey列名(行键列名)、参数3期望均匀分区数量(即预定分区数)、参数4分区结果输出路径。其中,分区结果输出路径用于将迭代计算的到的分区结果信息存储至分区结果输出路径。
步骤S102,基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键;
具体地,基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键。其中,该目标行键数据可以是身份证号、银行***、交易账号,由于在银行业等为代表的的行业中,客户身份证号、交易账号等固定字段作为客户或者资产的唯一标志,对于整体来说、其实是有序且较为稳定的。现有技术(Hash散列rowkey)是假定数据本身是完全无序的,所以需要借由hash散列rowkey来进行预分区,而在实际生产中,客户身份证号、交易账号等客户信息是有序且稳定的。
示例性地,目标行键数据可以是乱序排列的1-100的数据,预定分区数可以是10,得到的分区结果信息可以是1-10、11-20、21-30、31-40、41-50、51-60、61-70、71-80、81-90、91-100。
步骤S103,基于分区结果信息对Hbase数据库进行数据预分区。
其中,HBase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库,利用HBase可以在廉价的PC Server上搭建起大规模非结构化存储集群,能有效的降低大数据化背景下的存储成本。其中,预分区则是统计整体所有rowkey然后均匀分成N(预定分区数)等份的策略、并基于Hbase特点自动生成建表语句的方法。
本申请实施例提供了一种数据预分区方法,与现有技术通过Hash散列rowkey优化数据分布相比,本申请实施例通过基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数,然后基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键,继而基于分区结果信息对Hbase数据库进行数据预分区。即通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark-sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
本申请实施例提供了一种可能的实现方式,步骤S101包括:
步骤S1011(图中未示出),基于行键表名从目标Hive数据集中确定目标行键表;
步骤S1012(图中未示出),基于行键列名从目标行键表中获取目标行键数据。
具体地,目标Hive数据集中可以归集了多个数据表,基于行键表名从目标Hive数据集中确定目标行键表,然后基于行键列名从目标行键表中获取目标行键数据。
对于本申请实施例,解决了目标行键数据的取得问题。
本申请实施例提供了一种可能的实现方式,进一步地,步骤S102包括:
步骤S1021(图中未示出),对目标行键数据进行RDD化处理,得到RDD化处理后的目标行键数据;
步骤S1022(图中未示出),基于RDD化处理后的目标行键数据进行排序处理,得到排序处理后的目标行键数据;
步骤S1023(图中未示出),基于排序处理后的目标行键数据与预定分区数确定分区结果信息。
其中,RDD(Resilient Distributed Datasets,弹性分布式数据集),RDD分区:RDD划分成很多的分区(partition)分布到集群的节点,分区的多少涉及对这个RDD进行并行计算的粒度。分区是一个概念,变换前后的新旧分区在物理上可能是同一块内存或存储,这种优化防止函数式不变性导致的内存需求无限扩张。在Rdd中用户可以使用partitions方法获取RDD划分的分区数,当然用户也可以设定分区数目。如果没有指定将使用默认值,而默认值是该程序所分配到的cpu核数,如果是从hdfs文件创建,默认为文件的数据块数。Spark中RDD计算是以分区为单位的,而且计算函数都是在对迭代器复合,不需要保存每次计算结果。分区计算一般使用mapPartitions等操作进行,mapPartitions的输入函数应用于每一个分区,也就是把每个分区的内容作为整体来处理的。
对于本申请实施例,解决了确定分区结果信息的问题。
本申请实施例提供了一种可能的实现方式,其中,目标Hive数据集中数据的获取方式包括以下至少一项:
步骤S104(图中未示出),从多个Hive表中抽取目标行键数据得到目标Hive数据集;
步骤S105(图中未示出),从至少一个业务文件中抽取目标行键数据,并将得到的目标行键数据存储至HDFS***,以及将存储至HDFS***的目标行键数据映射为Hive表访问。
具体地,可以是基于已有的Hive的数据表,抽取单列字段,***到Hive的相应表中。
如:Insert overwrite table e_tbl_rowkey select rowkey列from rowkey业务表
具体地,也可以是从一个或多个业务文件中抽取目标行键数据,然后上传至HDFS***,然后映射为Hive表访问。
示例性地,手工提供rowkey集合文件,上传至HDFS/tmp/rowkey下;
Hadoop fs-rm-f/tmp/rowkey/*
Hadoop fs-put本地文件/tmp/rowkey/
对于本申请实施例,解决了目标Hive数据中的数据的获取问题。
本申请实施例提供了一种可能的实现方式,该方法还包括:
步骤S106(图中未示出),接收待存储目标数据的存储请求,待存储目标数据包含第二目标行键;
步骤S106(图中未示出),基于第二目标行键确定待存储目标数据对应的目标分区,并基于确定的目标分区将待存储目标数据存储。
对于申请实施例,解决了如何实现待存储目标数据的存储。
图2为本申请实施例提供的一种数据预分区装置,该装置20包括:获取模块201、计算模块202以及分区模块203,其中,
获取模块201,用于基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数;
计算模块202,用于基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键;
分区模块203,用于基于分区结果信息对Hbase数据库进行数据预分区。
本申请实施例提供了一种数据预分区装置,与现有技术通过Hash散列rowkey优化数据分布相比,本申请通过基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数,然后基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键,继而基于分区结果信息对Hbase数据库进行数据预分区。即通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark-sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
本实施例的数据预分区装置可执行本申请上述实施例中提供的一种数据预分区方法,其实现原理相类似,此处不再赘述。
如图3所示,本申请实施例提供了另一种数据预分区装置,该装置30包括:获取模块301、计算模块302以及分区模块303,其中,
获取模块301,用于基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数;
其中,图3中的获取模块301与图2中的获取模块201的功能相同或者相似。
计算模块302,用于基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键;
其中,图3中的计算模块302与图2中的计算模块202的功能相同或者相似。
分区模块303,用于基于分区结果信息对Hbase数据库进行数据预分区。
其中,图3中的分区模块303与图2中的分区模块203的功能相同或者相似。
本申请实施例提供了一种可能的实现方式,具体地,获取模块301包括:
确定单元3011,用于基于行键表名从目标Hive数据集中确定目标行键表;
获取单元3012,用于基于行键列名从目标行键表中获取目标行键数据。
对于本申请实施例,对于本申请实施例,解决了目标行键数据的取得问题。
本申请实施例提供了一种可能的实现方式,具体地,计算模块302包括:
RDD处理单元3021,对目标行键数据进行RDD化处理,得到RDD化处理后的目标行键数据;
排序单元3022,用于基于RDD化处理后的目标行键数据进行排序处理,得到排序处理后的目标行键数据;
确定单元3023,用于基于排序处理后的目标行键数据与预定分区数确定分区结果信息。
对于本申请实施例,解决了确定分区结果信息的问题。
本申请实施例提供了一种可能的实现方式,目标Hive数据集中数据的获取方式包括以下至少一项:
从多个Hive表中抽取目标行键数据得到目标Hive数据集;
从至少一个业务文件中抽取目标行键数据,并将得到的目标行键数据存储至HDFS***,以及将存储至HDFS***的目标行键数据映射为Hive表访问。
对于本申请实施例,解决了目标Hive数据中的数据的获取问题。
本申请实施例提供了一种可能的实现方式,该装置30还包括:
接收模块304,用于接收待存储目标数据的存储请求,待存储目标数据包含第二目标行键;
存储模块305,用于基于第二目标行键确定待存储目标数据对应的目标分区,并基于确定的目标分区将待存储目标数据存储。
对于本申请实施例,解决了如何实现待存储目标数据的存储。
本申请实施例提供了一种数据预分区装置,与现有技术通过Hash散列rowkey优化数据分布相比,本申请通过基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数,然后基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键,继而基于分区结果信息对Hbase数据库进行数据预分区。即通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark-sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
本申请实施例提供了一种数据预分区装置,适用于上述实施例所示的方法,在此不再赘述。
本申请实施例提供了一种电子设备,如图4所示,图4所示的电子设备40包括:处理器401和存储器403。其中,处理器401和存储器403相连,如通过总线402相连。进一步地,电子设备40还可以包括收发器404。需要说明的是,实际应用中收发器404不限于一个,该电子设备40的结构并不构成对本申请实施例的限定。其中,处理器401应用于本申请实施例中,用于实现图2或图3所示的获取模块、计算模块、分区模块的功能,以及图3所示的接收模块、存储模块的功能。收发器404包括接收机和发射机。
处理器401可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器401也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线402可包括一通路,在上述组件之间传送信息。总线402可以是PCI总线或EISA总线等。总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器403可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器403用于存储执行本申请方案的应用程序代码,并由处理器401来控制执行。处理器401用于执行存储器403中存储的应用程序代码,以实现图2或图3所示实施例提供的数据预分区方法装置的功能。
本申请实施例提供了一种电子设备,与现有技术通过Hash散列rowkey优化数据分布相比,本申请通过基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数,然后基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键,继而基于分区结果信息对Hbase数据库进行数据预分区。即通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark-sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
本申请实施例提供了一种电子设备适用于上述方法实施例。在此不再赘述。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述实施例中所示的方法。
本申请实施例提供了一种计算机可读存储介质,与现有技术通过Hash散列rowkey优化数据分布相比,本申请实施例通过基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,预分区信息包括行键表名、行键列名、预定分区数,然后基于目标行键数据与预定分区数,通过Spark-sql引擎进行分区迭代计算,得到分区结果信息,分区结果信息包括各个分区的开始行键与结束行键,继而基于分区结果信息对Hbase数据库进行数据预分区。即通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,实现大规模的目标行键数据的归集,根据归集的目标行键数据得到分区结果信息,并根据分区结果信息对Hbase数据库进行数据预分区,从而能实现大规模数据的均匀存储,避免出现数据倾斜;此外,Spark-sql引擎为基于内存的大数据处理框架,相较于基于磁盘的MapReduce,其数据处理速度更快,能实现大规模数据的快速计算;再者,与Hash散列rowkey(行键)的方式相比,本申请在读取数据时,不需要进行转义(Hash散列方式需要转义),能有效提升数据查询的速度。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据预分区方法,其特征在于,包括:
基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,所述预分区信息包括行键表名、行键列名、预定分区数;
基于所述目标行键数据与预定分区数,通过所述Spark-sql引擎进行分区迭代计算,得到分区结果信息,所述分区结果信息包括各个分区的开始行键与结束行键;
基于所述分区结果信息对Hbase数据库进行数据预分区。
2.根据权利要求1所述的方法,其特征在于,所述基于接收的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,包括:
基于所述行键表名从目标Hive数据集中确定目标行键表;
基于所述行键列名从所述目标行键表中获取目标行键数据。
3.根据权利要求1或2所述的方法,其特征在于,基于所述目标行键数据与预定分区数,通过所述Spark-sql引擎进行分区迭代计算,得到分区结果信息,包括:
对所述目标行键数据进行RDD化处理,得到RDD化处理后的目标行键数据;
基于所述RDD化处理后的目标行键数据进行排序处理,得到排序处理后的目标行键数据;
基于所述排序处理后的目标行键数据与预定分区数确定分区结果信息。
4.根据权利要求1所述的方法,其特征在于,所述目标Hive数据集中数据的获取方式包括以下至少一项:
从多个Hive表中抽取目标行键数据得到所述目标Hive数据集;
从至少一个业务文件中抽取目标行键数据,并将得到的目标行键数据存储至HDFS***,以及将存储至HDFS***的目标行键数据映射为Hive表访问。
5.根据权利要求1-4任一项所述的方法,其特征在于,该方法还包括:
接收待存储目标数据的存储请求,所述待存储目标数据包含第二目标行键;
基于所述第二目标行键确定所述待存储目标数据对应的目标分区,并基于确定的所述目标分区将所述待存储目标数据存储。
6.一种数据预分区装置,其特征在于包括:
获取模块,用于基于接收到的预分区信息通过Spark-sql引擎从目标Hive数据集中获取目标行键数据,所述预分区信息包括行键表名、行键列名、预定分区数;
计算模块,用于基于所述目标行键数据与预定分区数,通过所述Spark-sql引擎进行分区迭代计算,得到分区结果信息,所述分区结果信息包括各个分区的开始行键与结束行键;
分区模块,用于基于所述分区结果信息对Hbase数据库进行数据预分区。
7.根据权利要求6所述的装置,其特征在于,所述获取模块包括:
确定单元,用于基于所述行键表名从目标Hive数据集中确定目标行键表;
获取单元,用于基于所述行键列名从所述目标行键表中获取目标行键数据。
8.根据权利要求6所述的装置,其特征在于,所述计算模块包括:
RDD处理单元,对所述目标行键数据进行RDD化处理,得到RDD化处理后的目标行键数据;
排序单元,用于基于所述RDD化处理后的目标行键数据进行排序处理,得到排序处理后的目标行键数据;
确定单元,用于基于所述排序处理后的目标行键数据与预定分区数确定分区结果信息。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据权利要求1至5任一项所述的数据预分区方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述权利要求1至5中任一项所述的数据预分区方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911321136.1A CN111159235A (zh) | 2019-12-20 | 2019-12-20 | 数据预分区方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911321136.1A CN111159235A (zh) | 2019-12-20 | 2019-12-20 | 数据预分区方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111159235A true CN111159235A (zh) | 2020-05-15 |
Family
ID=70557559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911321136.1A Pending CN111159235A (zh) | 2019-12-20 | 2019-12-20 | 数据预分区方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159235A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737347A (zh) * | 2020-06-15 | 2020-10-02 | 中国工商银行股份有限公司 | 在Spark平台顺序切分数据的方法及装置 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112905628A (zh) * | 2021-03-26 | 2021-06-04 | 第四范式(北京)技术有限公司 | 数据处理方法及装置 |
CN112905854A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理方法、装置、计算设备及存储介质 |
CN113177090A (zh) * | 2021-04-30 | 2021-07-27 | 中国邮政储蓄银行股份有限公司 | 数据处理方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130166589A1 (en) * | 2011-12-23 | 2013-06-27 | Daniel Baeumges | Split processing paths for a database calculation engine |
CN105550293A (zh) * | 2015-12-11 | 2016-05-04 | 深圳市华讯方舟软件技术有限公司 | 一种基于Spark-SQL大数据处理平台的后台刷新方法 |
CN107885779A (zh) * | 2017-10-12 | 2018-04-06 | 北京人大金仓信息技术股份有限公司 | 一种Spark并行访问MPP数据库的方法 |
CN109902101A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 基于SparkSQL的透明分区方法及装置 |
CN110046176A (zh) * | 2019-04-28 | 2019-07-23 | 南京大学 | 一种基于Spark的大规模分布式DataFrame的查询方法 |
CN110109923A (zh) * | 2019-04-04 | 2019-08-09 | 北京市天元网络技术股份有限公司 | 时序数据的存储方法、分析方法及装置 |
CN110175175A (zh) * | 2019-05-29 | 2019-08-27 | 大连大学 | 一种基于spark的分布式空间二级索引与范围查询算法 |
CN110502471A (zh) * | 2019-07-31 | 2019-11-26 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
-
2019
- 2019-12-20 CN CN201911321136.1A patent/CN111159235A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130166589A1 (en) * | 2011-12-23 | 2013-06-27 | Daniel Baeumges | Split processing paths for a database calculation engine |
CN105550293A (zh) * | 2015-12-11 | 2016-05-04 | 深圳市华讯方舟软件技术有限公司 | 一种基于Spark-SQL大数据处理平台的后台刷新方法 |
CN107885779A (zh) * | 2017-10-12 | 2018-04-06 | 北京人大金仓信息技术股份有限公司 | 一种Spark并行访问MPP数据库的方法 |
CN109902101A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 基于SparkSQL的透明分区方法及装置 |
CN110109923A (zh) * | 2019-04-04 | 2019-08-09 | 北京市天元网络技术股份有限公司 | 时序数据的存储方法、分析方法及装置 |
CN110046176A (zh) * | 2019-04-28 | 2019-07-23 | 南京大学 | 一种基于Spark的大规模分布式DataFrame的查询方法 |
CN110175175A (zh) * | 2019-05-29 | 2019-08-27 | 大连大学 | 一种基于spark的分布式空间二级索引与范围查询算法 |
CN110502471A (zh) * | 2019-07-31 | 2019-11-26 | 联想(北京)有限公司 | 一种数据处理方法及电子设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737347A (zh) * | 2020-06-15 | 2020-10-02 | 中国工商银行股份有限公司 | 在Spark平台顺序切分数据的方法及装置 |
CN111737347B (zh) * | 2020-06-15 | 2024-02-13 | 中国工商银行股份有限公司 | 在Spark平台顺序切分数据的方法及装置 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112233727B (zh) * | 2020-10-29 | 2024-01-26 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112905854A (zh) * | 2021-03-05 | 2021-06-04 | 北京中经惠众科技有限公司 | 数据处理方法、装置、计算设备及存储介质 |
CN112905628A (zh) * | 2021-03-26 | 2021-06-04 | 第四范式(北京)技术有限公司 | 数据处理方法及装置 |
CN112905628B (zh) * | 2021-03-26 | 2024-01-02 | 第四范式(北京)技术有限公司 | 数据处理方法及装置 |
CN113177090A (zh) * | 2021-04-30 | 2021-07-27 | 中国邮政储蓄银行股份有限公司 | 数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159235A (zh) | 数据预分区方法、装置、电子设备及可读存储介质 | |
Park et al. | Parallel computation of skyline and reverse skyline queries using mapreduce | |
Kolb et al. | Load balancing for mapreduce-based entity resolution | |
KR101700340B1 (ko) | 대용량 데이터의 클러스터 결과 분석 시스템 및 방법 | |
CN112287182A (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
US8868576B1 (en) | Storing files in a parallel computing system based on user-specified parser function | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
US11074242B2 (en) | Bulk data insertion in analytical databases | |
Ferraro Petrillo et al. | Analyzing big datasets of genomic sequences: fast and scalable collection of k-mer statistics | |
CN104111936A (zh) | 数据查询方法和*** | |
US11221890B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
Tao et al. | Clustering massive small data for IOT | |
US10162830B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
US10326824B2 (en) | Method and system for iterative pipeline | |
US10599614B1 (en) | Intersection-based dynamic blocking | |
Ciritoglu et al. | Hard: a heterogeneity-aware replica deletion for hdfs | |
US10048991B2 (en) | System and method for parallel processing data blocks containing sequential label ranges of series data | |
US10956125B2 (en) | Data shuffling with hierarchical tuple spaces | |
Moertini et al. | Enhancing parallel k-means using map reduce for discovering knowledge from big data | |
Slagter et al. | SmartJoin: a network-aware multiway join for MapReduce | |
Packiaraj et al. | Hypar-fca: a distributed framework based on hybrid partitioning for fca | |
CN108319604A (zh) | 一种hive中大小表关联的优化方法 | |
US10891274B2 (en) | Data shuffling with hierarchical tuple spaces | |
Zhao et al. | Divide‐and‐conquer approach for solving singular value decomposition based on MapReduce | |
CN113868267A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220926 Address after: 25 Financial Street, Xicheng District, Beijing 100033 Applicant after: CHINA CONSTRUCTION BANK Corp. Address before: 25 Financial Street, Xicheng District, Beijing 100033 Applicant before: CHINA CONSTRUCTION BANK Corp. Applicant before: Jianxin Financial Science and Technology Co.,Ltd. |