CN111723089A - 一种基于列式存储格式处理数据的方法和装置 - Google Patents

一种基于列式存储格式处理数据的方法和装置 Download PDF

Info

Publication number
CN111723089A
CN111723089A CN201910216038.5A CN201910216038A CN111723089A CN 111723089 A CN111723089 A CN 111723089A CN 201910216038 A CN201910216038 A CN 201910216038A CN 111723089 A CN111723089 A CN 111723089A
Authority
CN
China
Prior art keywords
target data
batch
data
storage format
similarity
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
Application number
CN201910216038.5A
Other languages
English (en)
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.)
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Wodong Tianjun Information Technology 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 Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Wodong Tianjun Information Technology Co Ltd
Priority to CN201910216038.5A priority Critical patent/CN111723089A/zh
Publication of CN111723089A publication Critical patent/CN111723089A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种基于列式存储格式处理数据的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收批量目标数据;根据目标数据的字段信息,确定所述批量目标数据之间的相似度;以及,根据确定的相似度对所述批量目标数据进行排序;基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理。该方法能够降低压缩率和数据存储资源,解决了文件膨胀问题。

Description

一种基于列式存储格式处理数据的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于列式存储格式处理数据的方法和装置。
背景技术
由列式存储格式的特点可知,使用列式存储时每一列的所有元素都是顺序存储的。其中,列式存储格式也有很多,例如ORC(Optimized Row Columnar)存储格式。对于批量数据的存储,降低其压缩率是非常必要的。
现有技术中,区别于行式存储格式,ORC采用的列式存储可在自己的存储单元内可以保持数据格式的一致性,从而可以提升压缩率。以及,在列信息的存储单元内ORC会判断当前列信息的聚族程度,以来决定是否使用字典编码进行进一步压缩,这些操作可节约数据的存储空间,而多级索引的模式可以根据各级统计信息大幅提升数据的查询效率。其中,字典编码是指当某个字段有大量相同的枚举值时会把相同的枚举值统一用某个字典编码表示,不会重复记录多次。虽然通过上述方式可在一定程度上降低数据文件的压缩率,但是上述操作没有非常充分,很多情况下,处理结果的压缩率还是无法满足需求。
发明内容
有鉴于此,本发明实施例提供一种基于列式存储格式处理数据的方法和装置,能够降低压缩率和数据存储资源,解决了ORC文件膨胀的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种基于列式存储格式处理数据的方法。
本发明实施例的基于列式存储格式处理数据的方法包括:接收批量目标数据;根据目标数据的字段信息,确定所述批量目标数据之间的相似度;以及,根据确定的相似度对所述批量目标数据进行排序;基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理。
可选地,基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理之后,还包括:确定逻辑处理后所述批量目标数据的压缩率;根据所述压缩率,判断是否对所述批量目标数据进行重新排序;如果是,则根据目标数据的字段信息,确定所述批量目标数据间的新的相似度;以及,根据确定的新的相似度对所述批量目标数据进行排序。
可选地,根据目标数据的字段信息,确定所述批量目标数据之间的相似度的步骤包括:分析目标数据的字段信息,从所述目标数据的所有字段中筛选出多个排序字段;关联目标数据的所述多个排序字段的字段信息,确定所述批量目标数据之间的相似度。
可选地,基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理的步骤包括:基于排序结果,按照列式存储格式将所述批量目标数据存储至Hive数据仓库中;和/或,所述列式存储格式为ORC文件存储格式。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种基于列式存储格式处理数据的装置。
本发明实施例的基于列式存储格式处理数据的装置包括:
接收模块,用于接收批量目标数据;
排序模块,用于根据目标数据的字段信息,确定所述批量目标数据之间的相似度;以及,根据确定的相似度对所述批量目标数据进行排序;
逻辑处理模块,用于基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理。
可选地,本发明实施例的基于列式存储格式处理数据的装置还包括检测模块,用于确定逻辑处理后所述批量目标数据的压缩率;根据所述压缩率,判断是否对所述批量目标数据进行重新排序;
检测模块判断对所述批量目标数据进行重新排序,则所述排序模块根据目标数据的字段信息,确定所述批量目标数据间的新的相似度;以及,根据确定的新的相似度对所述批量目标数据进行排序。
可选地,所述排序模块还用于,分析目标数据的字段信息,从所述目标数据的所有字段中筛选出多个排序字段;关联目标数据的所述多个排序字段的字段信息,确定所述批量目标数据之间的相似度。
可选地,所述逻辑处理模块还用于,基于排序结果,按照列式存储格式将所述批量目标数据存储至Hive数据仓库中;和/或,所述列式存储格式为ORC文件存储格式。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一项的基于列式存储格式处理数据的方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述任一项的基于列式存储格式处理数据的方法。
上述发明中的一个实施例具有如下优点或有益效果:可定位出数据的N个字段中相似度高的字段,对数据进行排序,从而改变数据分布,提高数据块数据的相似性,提升压缩率。以及,解决了文件膨胀、或者不能压缩的问题。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的基于列式存储格式处理数据的方法的主要流程的示意图;
图2是ORC文件结构的示意图;
图3是ORC文件结构中根据查询条件遍历数据的示意图;
图4是现有技术中基于列式存储格式处理数据的方法架构的示意图;
图5是根据本发明实施例的基于列式存储格式处理数据的方法架构的示意图;
图6是根据本发明实施例的基于列式存储格式处理数据的装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性系统架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
对于列式存储格式(Column-Based)和行式存储格式(Row-Based),其存在各自的特点。其中,关系数据库中通常使用行式存储,使用列式存储时每一列的所有元素都是顺序存储的。例如,分别按照列式存储格式和行式存储格式存储下表1,处理后的结果分别如表2、表3所示。
表1
ID NAME DATE
001 A 1-1
002 B 1-2
003 C 1-3
….
表2
001 A 1-1 002 B 1-2 003 C 1-3
表3
Figure BDA0002002141540000051
由上述示例可知,相对于关系数据库中通常使用的行式存储,使用列式存储时每一列的所有元素都是顺序存储的。此特点可以给查询及存储带来以下优化:查询的时候不需要扫描全部的数据,而只需要读取每次查询涉及的列,可以有效降低I\O操作;由于每一列的成员都是同构的,可以针对不同的数据类型使用更高效的数据压缩算法,节约存储空间,进一步减少I\O。
图1是根据本发明实施例的基于列式存储格式处理数据的方法的主要流程的示意图,如图1所示,本发明实施例的基于列式存储格式处理数据的方法主要包括:
步骤S101:接收批量目标数据。
步骤S102:根据目标数据的字段信息,确定批量目标数据之间的相似度;以及,根据确定的相似度对批量目标数据进行排序。确定相似度的过程中,分析目标数据的字段信息,从目标数据的所有字段中筛选出多个排序字段;关联目标数据的多个排序字段的字段信息,确定批量目标数据之间的相似度。
步骤S103:基于排序结果,按照列式存储格式对批量目标数据进行逻辑处理。具体的,基于排序结果,按照列式存储格式将批量目标数据存储至Hive数据仓库中;和/或,列式存储格式为ORC文件存储格式。上述过程之后,确定逻辑处理后批量目标数据的压缩率;根据压缩率,判断是否对批量目标数据进行重新排序。如果是,则根据目标数据的字段信息,确定批量目标数据间的新的相似度;以及,根据确定的新的相似度对批量目标数据进行排序。
ORC(Optimized Row Columnar)文件格式作为一种列式存储格式,是一种Hadoop生态圈中的列式存储格式,用于降低Hadoop数据存储空间和加速Hive查询速度,目前已成为hive、spark、presto等多种数据处理框架钟爱的主流结构。和Parquet类似,它首先根据行组分割整个表,在每一个行组内进行按列存储。数据使用ORC格式进行存储时,首先会将数据按行拆分成若干个数据块stripe,在每个stripe内,再按列信息进行列式存储。以及,ORC会构建各个级别的元数据信息及索引信息。如图2所示,ORC文件分为三个层级的统计信息,分别为file level、stripe level和row level。
file level:在ORC文件的末尾会记录文件级别的统计信息PostScript,PostScript记录了整个文件的描述信息、元数据信息、统计信息,这些信息主要用于查询的优化,也可以为一些简单的聚合查询比如max,min,sum输出结果。
stripe level:如图2中的File Footer,ORC文件会保存每个字段stripe级别的统计信息,ORC reader使用这些统计信息来确定某一次数据查询中,需要读入哪些stripe中的记录。比如说某个stripe的字段max(a)=100,min(a)=20,那么当where条件为a>100或者a<20时,则显然这个stripe中的数据不需要被这次查询读入。
row level:如图2中的Index Data,ORC会为每个stripe内的所有列的数据(column_1至column_m)构建索引,每一列column会有很多行记录。ORC默认以10000行记录为一个index组(可设置参数调整index组的大小),每个index组会有自己的统计信息,这样在数据查询时,可以根据查询条件,在过滤部分stripe后,进一步过滤掉stripe中无需遍历的index组,从而进一步提升查询效率。Index Data只是数据的索引信息,真正的数据信息,通过ORC的压缩算法以stream的形式存储在Data Stream。如图2中虚线所示,数据查询时,会在确定索引信息后,根据索引信息到Data Stream中获取真正的数据。
区别于行式存储,ORC采用的列式存储在自己的存储单元内可以保持数据格式的一致性,从而可以大幅提升压缩比率,同时在列信息的存储单元内ORC会判断当前列信息的聚族程度来决定是否使用字典编码进行进一步压缩,这些操作大大节约了数据的存储空间,而多级索引的模式可以根据各级统计信息大幅提升数据的查询效率。
本发明实施例,可定位出数据的N个字段中相似度高的字段,对数据进行排序,从而改变数据分布,提高数据块数据的相似性,提升压缩率。以及,解决了ORC文件膨胀、或者不能压缩的问题。
图3是ORC文件结构中根据查询条件遍历数据的示意图。例如:通过以下查询条件查询数据:where a>100or a<20,其遍历数据如图3所示,图中带有叉号的部分说明不需要遍历,没有叉号的连线部分,为查询遍历的数据文件。其中,根据列a的文件级统计信息可以知道是否需要遍历文件,根据列a的Stripe统计信息可以知道哪些stripe是不需要遍历的,根据列a的row-group统计信息可以知道哪些row是不需要遍历的。
基于上述ORC的底层结构,在实际生产中会遇到以下问题:相同的ORC表文件,数据量级一致,字段数量完全一致,各个字段存储信息一致,存储格式均为ORC,各方面情况均相似的两张表在存储量级上会相差4倍。针对该情况,通过实践发现数据分布差异造成了两个表的存储及查询效率的差异。如果表A在各个stripe内数据聚簇程度远远高于表B,其各列信息的聚簇程度高,会提高数据压缩程度。比如:1000条数据平均占用的存储是1B,而检测器发现表占用的存储是10B,则认为是数据分布影响了数据压缩,造成了膨胀,查看10B结果表字段可以确定字段各个枚举值的数量。某个字段的枚举值有A\B\C,程序很容易捕获A、B、C枚举值的数量,假设A有500条,B有200条,C有300条,则数据分布应尽可能让字段值为A的数据保持在一起字段值为B的数据保持在一起……从而消除杂乱离散数据带来的膨胀。所以,如果能保证ORC文件数据分布有序,将极大的增加存储资源。
图4是现有技术中基于列式存储格式处理数据的方法架构的示意图,图5是根据本发明实施例的基于列式存储格式处理数据的方法架构的示意图。
如图4所示,现有技术数据的处理逻辑是由原来数据脚本决定的,没有考虑数据的有序分布。基于该现有技术,在不更改现有的处理逻辑的情况下,可通过检测器检测生成的文件的压缩率。如果压缩比例低于设置的压缩阈值,则判断存在文件膨胀,压缩不生效,然后执行后续的重新排序与重写操作,如图5所示。
本发明实施例的基于列式存储格式处理数据的方法架构中,检测器用于记录文件生成与压缩后的比率。例如,压缩前为原始文件Oraginal File简称OrgFile,压缩后为Compress File简称ComFile。检测器执行的功能是使用CompFile除以OrgFile,得到Compress rate压缩率(文件压缩后的大小与压缩前的大小之比),简称ComRate。如果压缩比例低于设置的压缩阈值,则判断压缩不生效。其中,压缩阀值可由其他orc表的压缩分布情况确定,简单可理解为根据orc格式表的平均压缩率来确定。以平台所使用的orc表为样本,可由统计学计算出平台整体orc表压缩率的正常区间,如果检测器发现目标表超出范围,则认为存在膨胀。例如,如果ComRate>=1,证明完全没有压缩,甚至文件出现膨胀。那么可以认为ORC中的文件排序有问题,则进入到排序引擎阶段执行排序功能。
排序器是将数据结果重新进行排序,其具体可通过Hive的distribute by、sortby函数以及join操作实现,最优通过join操作实现。具体是因为在数据处理时通过关联表选择key值的方式,达到按对应key分布数据,且保证key值有序的目的,是一种比较理想的方式,其消耗的时间成本远低于distribute by、sort by操作。一是因为数据处理逻辑中往往已经有join的操作,增加新的join成本相对较低,二是因为显然在map端和shuffle端分布式的进行排序,会比在reduce端进行排序效率更高。
以以下sku宽表为例说明一下排序的具体处理过程,例如:sku宽表附带了很多商品属性信息,同一商品的商品属性信息是相同的,如下表4所示:
表4
Figure BDA0002002141540000101
如果相同商品的sku数据分布到一起,多列数据的聚簇程度将会很高,则有利于数据的压缩,所以通过distribute by商品id可以对商品id做hash分桶,将相同商品id的sku数据发送到同一个reduce节点上进行处理,从而达到影响数据分布的目的。但是,把相同商品的sku数据发布到一个reduce节点还不够,因为同一个商品的sku数量可能很多,如果同一个商品的sku数据被切分到了不同的stripe,显然不但会影响Stripe级别压缩,也会对stripe组内row-group级别的压缩造成影响。
进一步,在distribute by的基础上,可以增加sort by操作使数据序列有序,从而控制数据在stripe内的分布达到橙色图中高效分布的效果。则在数据处理逻辑中为了节约存储空间、提升查询效率,对数据的存储分布和序列进行了控制。但是,通过distribute bysort by对数据分布进行控制,存在成本高的问题,原本1个小时能够完成的数据处理流程,要1小时45分钟才能够结束,本质上拿时间换空间,即消耗时间成本组织数据分布、调整数据序列,从而节约空间成本和未来查询的时间成本。
一般在进行数据处理逻辑时经常需要join不同的表,获得需要的数据信息,MapReduce在处理join操作时会将表的join-key作为<key,value>中的key值,相同key的数据会发往同一个reduce节点,在reduce节点完成不同表数据的iterator操作实现表的关联。map任务进程中数据由环栈缓冲区写入磁盘时,会对<key,value>中的key值进行排序,从而保证每个写入磁盘的中间文件key值有序,在shuffle过程开始之前会merge各个中间文件中hash分区相同的数据部分,通过归并排序保证merge后的文件仍然key值有序。Reduce节点会通过shuffle过程到各个节点fetch对应的分区数据,然后仍然会把不同节点的文件进行merge并仍然保证key值有序。在map阶段数据写入磁盘时会进行排序保证key值有序,map本地文件按分区合并时仍会通过归并排序保持key值有序,shuffle过程得到各个map节点的文件后进行merge仍会保证key值有序。
由上可知,通过join操作的key值,可以做到控制数据文件的数据分布,让希望聚集在一起的数据分发到一起且保持有序。所以,distribute by sort by和join操作均可以控制数据分布,将相似度高的数据尽可能有序集中在一起,基于上述mapreduce原理,join操作的时效性高于distribute by sort by操作,有更好的效果。在实际生产中,通过join,只多花了10分钟的时间就将MKT sku商品宽表每日的数据量级从4T缩减至1T,同时因为保证了stripe及row-group的索引有序性提高了下游使用该表的查询效率。
本发明实施例的基于列式存储格式处理数据的方法架构的重新引擎,是对排序结果数据的重写,将排序器确定的排序结果落地。
使用ORC作为存储结构时,数据的分布、序列对文件最终的大小,查询效率会有较大的影响,Hive ORC表的数据不会凭空生成,往往存储的是一系列数据处理逻辑的最终结果,不同的处理逻辑,会造成不同的数据分布,从而有不同的存储空间、使用效率。因此,在处理数据时,可定位出数据的N个字段中相似度高的字段,对数据进行排序,从而改变数据分布,提高数据块(stripe)数据的相似性,提升压缩率。解决了文件膨胀、或者不能压缩的问题。
图6是根据本发明实施例基于列式存储格式处理数据的装置的主要模块的示意图,如图6所示,本发明实施例的基于列式存储格式处理数据的装置600包括接收模块601、排序模块602和逻辑处理模块603。
接收模块601用于,接收批量目标数据。
排序模块602用于,根据目标数据的字段信息,确定所述批量目标数据之间的相似度;以及,根据确定的相似度对所述批量目标数据进行排序。排序模块还用于,分析目标数据的字段信息,从所述目标数据的所有字段中筛选出多个排序字段;关联目标数据的所述多个排序字段的字段信息,确定所述批量目标数据之间的相似度。
逻辑处理模块603用于,基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理。逻辑处理模块还用于,基于排序结果,按照列式存储格式将所述批量目标数据存储至Hive数据仓库中;和/或,所述列式存储格式为ORC文件存储格式。
本发明实施例的基于列式存储格式处理数据的装置还包括检测模块,用于确定逻辑处理后所述批量目标数据的压缩率;根据所述压缩率,判断是否对所述批量目标数据进行重新排序。检测模块判断对所述批量目标数据进行重新排序,则所述排序模块根据目标数据的字段信息,确定所述批量目标数据间的新的相似度;以及,根据确定的新的相似度对所述批量目标数据进行排序。
本发明实施例,可定位出数据的N个字段中相似度高的字段,对数据进行排序,从而改变数据分布,提高数据块数据的相似性,提升压缩率。解决了文件膨胀、或者不能压缩的问题。
图7示出了可以应用本发明实施例的基于列式存储格式处理数据的方法或基于列式存储格式处理数据的装置的示例性系统架构700。
如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的基于列式存储格式处理数据的方法一般由服务器705执行,相应地,基于列式存储格式处理数据的装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取接收模块、排序模块和逻辑处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“接收批量目标数据的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收批量目标数据;根据目标数据的字段信息,确定批量目标数据之间的相似度;以及,根据确定的相似度对批量目标数据进行排序;基于排序结果,按照列式存储格式对批量目标数据进行逻辑处理。
本发明实施例,可定位出数据的N个字段中相似度高的字段,对数据进行排序,从而改变数据分布,提高数据块数据的相似性,提升压缩率。以及,解决了文件膨胀、或者不能压缩的问题。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种基于列式存储格式处理数据的方法,其特征在于,包括:
接收批量目标数据;
根据目标数据的字段信息,确定所述批量目标数据之间的相似度;以及,根据确定的相似度对所述批量目标数据进行排序;
基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理。
2.根据权利要求1所述的方法,其特征在于,基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理之后,还包括:
确定逻辑处理后所述批量目标数据的压缩率;
根据所述压缩率,判断是否对所述批量目标数据进行重新排序;
如果是,则根据目标数据的字段信息,确定所述批量目标数据间的新的相似度;以及,根据确定的新的相似度对所述批量目标数据进行排序。
3.根据权利要求1所述的方法,其特征在于,根据目标数据的字段信息,确定所述批量目标数据之间的相似度的步骤包括:
分析目标数据的字段信息,从所述目标数据的所有字段中筛选出多个排序字段;
关联目标数据的所述多个排序字段的字段信息,确定所述批量目标数据之间的相似度。
4.根据权利要求1-3任一项所述的方法,其特征在于,
基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理的步骤包括:基于排序结果,按照列式存储格式将所述批量目标数据存储至Hive数据仓库中;和/或,
所述列式存储格式为ORC文件存储格式。
5.一种基于列式存储格式处理数据的装置,其特征在于,包括:
接收模块,用于接收批量目标数据;
排序模块,用于根据目标数据的字段信息,确定所述批量目标数据之间的相似度;以及,根据确定的相似度对所述批量目标数据进行排序;
逻辑处理模块,用于基于排序结果,按照列式存储格式对所述批量目标数据进行逻辑处理。
6.根据权利要求5所述的装置,其特征在于,还包括检测模块,用于确定逻辑处理后所述批量目标数据的压缩率;根据所述压缩率,判断是否对所述批量目标数据进行重新排序;
检测模块判断对所述批量目标数据进行重新排序,则所述排序模块根据目标数据的字段信息,确定所述批量目标数据间的新的相似度;以及,根据确定的新的相似度对所述批量目标数据进行排序。
7.根据权利要求5所述的装置,其特征在于,所述排序模块还用于,分析目标数据的字段信息,从所述目标数据的所有字段中筛选出多个排序字段;关联目标数据的所述多个排序字段的字段信息,确定所述批量目标数据之间的相似度。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述逻辑处理模块还用于,基于排序结果,按照列式存储格式将所述批量目标数据存储至Hive数据仓库中;和/或,
所述列式存储格式为ORC文件存储格式。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4中任一所述的方法。
CN201910216038.5A 2019-03-21 2019-03-21 一种基于列式存储格式处理数据的方法和装置 Pending CN111723089A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910216038.5A CN111723089A (zh) 2019-03-21 2019-03-21 一种基于列式存储格式处理数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910216038.5A CN111723089A (zh) 2019-03-21 2019-03-21 一种基于列式存储格式处理数据的方法和装置

Publications (1)

Publication Number Publication Date
CN111723089A true CN111723089A (zh) 2020-09-29

Family

ID=72562567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910216038.5A Pending CN111723089A (zh) 2019-03-21 2019-03-21 一种基于列式存储格式处理数据的方法和装置

Country Status (1)

Country Link
CN (1) CN111723089A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445776A (zh) * 2020-11-20 2021-03-05 北京易观智库网络科技有限公司 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN113505131A (zh) * 2021-07-20 2021-10-15 北京电解智科技有限公司 调整数据排序的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106383844A (zh) * 2016-08-31 2017-02-08 天津南大通用数据技术股份有限公司 应用于特殊数据的存储方法及装置
CN106687966A (zh) * 2014-08-05 2017-05-17 伊卢米纳剑桥有限公司 用于数据分析和压缩的方法和系统
CN109360605A (zh) * 2018-09-25 2019-02-19 安吉康尔(深圳)科技有限公司 基因组测序数据归档方法、服务器及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106687966A (zh) * 2014-08-05 2017-05-17 伊卢米纳剑桥有限公司 用于数据分析和压缩的方法和系统
CN106383844A (zh) * 2016-08-31 2017-02-08 天津南大通用数据技术股份有限公司 应用于特殊数据的存储方法及装置
CN109360605A (zh) * 2018-09-25 2019-02-19 安吉康尔(深圳)科技有限公司 基因组测序数据归档方法、服务器及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高登: "云计算与Hadoop应用技术研究", 吉林大学出版社, pages: 91 - 93 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445776A (zh) * 2020-11-20 2021-03-05 北京易观智库网络科技有限公司 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN112445776B (zh) * 2020-11-20 2022-12-20 北京易观智库网络科技有限公司 基于Presto的动态分桶方法、系统、设备及可读存储介质
CN113505131A (zh) * 2021-07-20 2021-10-15 北京电解智科技有限公司 调整数据排序的方法和装置

Similar Documents

Publication Publication Date Title
JP6870071B2 (ja) テーブルのインクリメンタルクラスタリング保守
US10007699B2 (en) Optimized exclusion filters for multistage filter processing in queries
US9910860B2 (en) Split elimination in MapReduce systems
US6622138B1 (en) Method and apparatus for optimizing computation of OLAP ranking functions
US10108649B2 (en) Early exit from table scans of loosely ordered and/or grouped relations using nearly ordered maps
US9721007B2 (en) Parallel data sorting
CN107729399B (zh) 数据处理的方法和装置
US11003649B2 (en) Index establishment method and device
CN107016115B (zh) 数据导出方法、装置、计算机可读存储介质及电子设备
CN112925859A (zh) 数据存储方法和装置
US20220253463A1 (en) Segmenting users with sparse data utilizing hash partitions
US20190050672A1 (en) INCREMENTAL AUTOMATIC UPDATE OF RANKED NEIGHBOR LISTS BASED ON k-th NEAREST NEIGHBORS
CN111723089A (zh) 一种基于列式存储格式处理数据的方法和装置
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
CN110321388B (zh) 一种基于Greenplum的快速排序查询方法及系统
CN111198847A (zh) 一种适用于大数据集的数据并行处理方法、装置及系统
CN110334067B (zh) 一种稀疏矩阵压缩方法、装置、设备及存储介质
US20190034479A1 (en) Automatic selection of neighbor lists to be incrementally updated
CN113448957A (zh) 一种数据查询方法和装置
CN113760600A (zh) 一种数据库备份方法、数据库还原方法和相关装置
CN112115123A (zh) 用于分布式数据库的性能优化的方法和装置
CN117349321B (zh) 一种文档数据库多表连接查询方法及装置
US11822582B2 (en) Metadata clustering
US11868352B2 (en) Systems and methods for spilling data for hash joins
US11734282B1 (en) Methods and systems for performing a vectorized delete in a distributed database system

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