CN111767287A - 数据导入方法、装置、设备及计算机存储介质 - Google Patents
数据导入方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN111767287A CN111767287A CN202010625565.4A CN202010625565A CN111767287A CN 111767287 A CN111767287 A CN 111767287A CN 202010625565 A CN202010625565 A CN 202010625565A CN 111767287 A CN111767287 A CN 111767287A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- snapshot
- partition table
- partition
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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
-
- 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/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及金融科技(Fintech)技术领域,并公开了一种数据导入方法,该方法包括:将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;依次对具有所述划分数据的分区表创建索引,以获取具有索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。本发明还公开了一种数据导入装置、设备和一种计算机存储介质。本发明提高了数据导入的效率。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及数据导入方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、云计算、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对数据导入的技术提出了更高的要求。目前在进行数据导入时,一般是先确定hive(数据仓库)中的待进行数据导入的数据,再通过spark(计算引擎)计算该数据的分配方式,根据计算的分配方式将该数据导入至目标集群,并在目标集群中通过java应用将导入的数据进行格式转换,再存储至该数据对应的索引文件中。但是在数据量较大时,随着数据不断的导入,索引保存的segement(数据段)也会不断的增多,并且还需要对segement进行合并处理,对磁盘资源需求量较大,有时甚至会出现磁盘满负荷运行操作,使得数据导入的速度急剧下降,严重影响数据导入的效率。
发明内容
本发明的主要目的在于提出一种数据导入方法、装置、设备及计算机存储介质,旨在解决如何提高数据导入的效率的技术问题。
为实现上述目的,本发明提供一种数据导入方法,所述数据导入方法包括如下步骤:
将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;
对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;
依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;
将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。
可选地,对所述目标数据进行分类处理,以获取多个划分数据的步骤,包括:
获取所述目标数据中的所有子数据,基于预设的数据转换方式将各所述子数据转换为数值,并检测各所述数值中是否存在大于预设固定值的目标数值;
若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据。
可选地,若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据的步骤之后,包括:
基于所述原始数据对应的目标集群的可用资源确定待创建的索引的索引数量,并构建和所述索引数量相同数量的分区表,确定各所述分区表的取值范围,依次遍历各所述划分数据,将当前遍历的当前划分数据和各所述取值范围进行匹配;
若在各所述取值范围中存在和所述当前划分数据匹配的目标取值范围,则将所述目标取值范围对应的分区表作为所述当前划分数据对应的分区表,直至各所述划分数据遍历完成。
可选地,将各所述划分数据依次分配至各所述划分数据对应的分区表的步骤,包括:
将各所述划分数据依次分配至各所述划分数据对应的分区表,依次遍历各所述分区表,并对当前遍历的当前分区表中预设的归约任务个数进行求余处理,根据所述求余处理结果将所述当前分区表中的划分数据分配至各所述归约任务中,直至各所述分区表遍历完成。
可选地,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照的步骤,包括:
依次遍历各所述目标分区表,获取当前遍历的当前目标分区表中的多个数据段,并根据各所述数据段的属性进行合并处理,以获取目标数据段,并将具有所述目标数据段的当前目标分区表进行快照处理,以获取所述当前目标分区表对应的目标快照,直至各所述目标分区表遍历完成。
可选地,将各所述目标快照发送至所述原始数据对应的目标集群的步骤,包括:
将各所述目标快照发送至HDFS,并通过所述HDFS将所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复,以获取各所述目标快照中的快照数据和索引,并检测各所述快照数据是否和所述目标集群中的历史数据匹配,若均不匹配,则对各所述索引进行合并处理,并将各所述快照数据写入至所述目标集群。
可选地,将待进行数据导入的原始数据进行数据转换处理,以获取目标数据的步骤,包括:
将待进行数据导入的原始数据进行数据转换处理,以获取整型数据,并根据预设格式对所述整型数据进行格式转换,以获取目标数据。
此外,为实现上述目的,本发明还提供一种数据导入装置,所述数据导入装置包括:
数据转换模块,用于将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;
分配模块,用于对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;
获取模块,用于依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;
发送模块,用于将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。
此外,为实现上述目的,本发明还提供一种数据导入设备,所述数据导入设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据导入程序,所述数据导入程序被所述处理器执行时实现如上所述的数据导入方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有数据导入程序,所述数据导入程序被处理器执行时实现如上所述的数据导入方法的步骤。
本发明通过将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。通过先将待进行数据导入的原始数据进行数据转换处理,得到目标数据,从而避免了将原始数据导入至目标集群后,再进行格式转换,浪费目标集群的资源的现象发生,并且会对目标数据进行分类,将分类后的各个划分数据分配至各自对应的分区表中,并创建相应的索引,得到各个目标分区表,再进行快照处理,得到各个目标快照,将各个目标快照发送至目标集群,从而避免了一次性发送过多的数据到目标集群,导致目标集群处理效率下降,使得目标集群接收数据的速度降低的现象发生,提高了数据导入的效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的数据导入设备结构示意图;
图2为本发明数据导入方法第一实施例的流程示意图;
图3为本发明数据导入装置的装置模块示意图;
图4为本发明数据导入方法的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的数据导入设备结构示意图。
本发明实施例数据导入设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该数据导入设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的数据导入设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据导入程序。
在图1所示的数据导入设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据导入程序,并执行下述数据导入方法中的操作。
基于上述硬件结构,提出本发明数据导入方法实施例。
参照图2,图2为本发明数据导入方法第一实施例的流程示意图,所述数据导入方法包括:
步骤S10,将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;
在本实施例中,ElasticSearch是一个分布式多用户能力的全文搜索引擎,可以作为进行数据导入的目标集群,但在本实施例中并不仅仅局限于ElasticSearch,还可以是其它集群。索引是关系型数据库中的一种数据存储结构,用于存放数据,在本实施例中,可以根据索引的数量来建立多个分区表,以便将数据量较大的数据转换为数据量较小的数据再导入至目标集群,保障了数据导入的效率。
由于现有的技术中,进行数据导入时,需要对数据进行分词,创建索引等操作,对目前集群的CPU有较高要求,而且在数据导入后,是根据索引存储数据的。但是这样对内存缓存和硬盘存储都存在一定的缺陷,即在内存缓存方面中,由于索引中各个数据对应的字段索引大部分为字符串类型的索引,而字符串索引缓存时,需要缓存字符串中全部的词语,并且是每个字符需要占据一个字节,严重浪费内存资源,甚至会影响到整体数据缓存的效率。而在硬盘存储方面,由于字符串索引缓存需要缓存字符串全部的词语,因此也会浪费硬盘空间,影响存储效率。基于此,本发明实施例中,通过使用大数据集群(如Hadoop集群)实现将待进行数据导入的原始数据(如离线数据,历史数据)高性能导入至目标集群,如ElasticSearch中的。也就是针对大数据集群中要进行数据导入的原始数据,可以根据给定的索引数量对用户ID使用hash(哈希)和求余的方案,即先对经过数据转换处理的原始数据(即目标数据)进行拆分处理,如当原始数据为离线宽表数据时,则拆分离线宽表数据,分成多个数据表,每个数据表均对应有一个索引。并且会对每个数据表采用相同的操作,即对数据表创建map任务,并对数据表中的所有主键进行hash转换,得到转换后的hash值,再获取预设的reduce任务(即归约任务)个数,并对各个reduce个数进行求余处理,以便将数据表中的数据依次分配至各个reduce中,而在分配数据至reduce后,会为这些reduce依次创建一个各自对应的私有进程(即与目标集群相关的进程),并启动各个私有进程,而且在每个reduce中,会将reduce中的数据导入至该reduce对应的私有进程中。其中,当每个reduce导入数据均完毕时,会进行segement合并,并在合并完成后,创建快照,将此快照上传至HDFS(Hadoop Distributed File System,分布式文件系统)中,而目标集群中的程序会定时扫描HDFS上的快照文件目录,将HDFS新增的快照都转存到目标集群中,并使用快照恢复的方式进行快照恢复。
其中,对将待进行数据导入的原始数据进行数据转换处理的方式,具体为,获取原始数据所在宽表中,每个字段数据的非空枚举值,然后将原始数据所在宽表中,每个字段的数据的所有非空的枚举值都进行编码处理,并将经过编码处理产生的各类字符串形式的数据转换为整型数据,并将整型数据和原始数据的对应关系存储至维度表中。例如,原始数据为sex:男,女,则进行编码处理转化后的整型数据就为sex:0,1。再对整型数据进行预设格式(如json格式)转换,得到目标数据。例如,若整型数据为:
sex age
0 1
则进行转换后的目标数据就为“sex”:“0”,“sex”:“1”。
步骤S20,对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;
当获取到目标数据后,由于目标数据的数据量比较大,因此需要对目标数据中所包含的子数据进行分类处理,以获取多个划分数据,即对目标数据所在宽表中唯一键的字段,做hash处理,并转化为数字后,通过求余的方式,将经过hash处理后的数字转换为小于某一固定值(用户提前设置的任意值,如100万)的数字,即划分数据。例如,假设若获取到目标数据中的某一个子数据,即唯一键字段:osdlsssdaaww,则可以对此子数据进行hash处理,并得到经过hash处理后的值,即1775361181,再对1775361181进行求余100万,得到361181(即该子数据对应的划分数据)。其中,hash处理的方式是将各个唯一键的字段都转换为一个固定长度的字段。并当获取到各个划分数据后,再根据各个分区表所对应的取值范围,确定将各个划分数据配置至各个划分数据对应的分区表中。例如,当各个划分数据均为小于100万的数字,则可以将[1,10]万,(50,60]万的数据放置在分区一表,将(10,20]万,(60,70]万的数据放置在分区二表,将(20,30]万,(70,80]万的数据放置在分区三表,将(30,40]万,(80,90]万的数据放置在分区四表,将(40,50]万,(90,100]万的数据放置在分区五表。
步骤S30,依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;
当将各个划分数据分配至分区表后,需要对分区表均采用相同的操作方式,即可以先在分区表中执行并行分配任务,也就是对主键求hash值,并使用hash后的值对设定的reduce(归约任务,即用于对划分数据中的字段进行合并处理)个数进行求余操作,基于求余结果将分配在该分区表的数据依次分配至分区表中的各个reduce中。再对每个reduce创建一个私有的ElasticSearch进程(即目标集群进程),并根据原始数据中的字段创建索引,再将reduce中数据导入至该ElasticSearch进程,再对当前的索引文件进行合并处理,即将多个小的segement合并成大的segement,以减少数据冗余,并将进行合并处理后的分区表作为目标分区表,再对该目标分区表进行快照处理,以获取该目标分区表对应的目标快照。并且对每个分区表都采用相同的方式得到各个目标分区表,并进行快照处理,得到多个目标快照。其中,本实施例中可以同时对各个分区表执行分配任务,并对分区表中的每个元素做计算,将不同的key根据规则映射成多个列表,从而实现在数据导入至目标集群前将数据提前进行分类,无需在导入至目标集群后,再对数据进行分类,方便用户后期在目标集群中进行数据的查询操作。Reduce表示对一个列表中的每个元素做迭代计算,是针对相同的key的一个列表进行的。Segement是数据段,用于存储少量数据,在本实施例中,可以将多个数据段进行组合,得到相应的索引。
步骤S40,将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复,并对所述快照恢复后的数据进行写入操作。
将各个快照依次发送至HDFS中,并通过HDFS将各个快照发送至原始数据对应的目标集群(如ElasticSearch),也就是在将快照发送至HDFS中后,目标集群会定时扫描HDFS中的目录,若发现有新增文件(如新增快照),则将此快照转出到目标集群中,而目标集群在获取到各个快照后,会进行快照恢复,并对恢复后的快照进行读取操作,即读取快照中的元数据,以及segement信息,对应各个segement要写入的shard(数据分片),通过与目标集群本身的shard的segement进行对比,若发现重复,则不写入到目标集群,若不重复,则写入到目标集群,并且会通过别名的方式合并所述目标快照对应的索引,例如,若索引存在5个,则对这5个索引起同一个别名,在需要调用时,可以直接调用别名,并在目标集群的底层进行多个索引的查询及结果合并,无需感知访问多个索引。例如,若存在5索引,为A-1,A-2,A-3,A-4,A-5,则这些索引的别名就是A,当指定索引为A时,则会同时查询这5个索引,当指定索引为A-1时,只查询一个索引,并且在本实施例中拆索引的目的是减少大索引引起的查询速度慢等问题,并且多个索引可以进行多个任务,同时导入数据,若发现部分数据导入失败时,只需要针对某个索引,重新进行导入操作即可,而无需再次对所有数据进行全量导入。
在本实施例中,通过使用集群节点(即目标集群)计算资源和内存资源,对写入的数据进行存储及索引文件创建,使得目标集群只需通过恢复快照即可获得索引,并且在本实施例中,通过提前对目标集群的CPU计算,并根据CPU计算结果确定索引数量,降低了目标集群的CPU要求,使目标集群的磁盘提前做segement合并,降低了对目前目标集群的磁盘IO要求,减少segement合并次数,并通过使用拆分数据到不同索引的方式,提高了数据导入的效率。
并且目前在进行存储数据和计算索引时,对目标集群的配置要求较高,当目标集群的配置较低时,无法进行高效的数据导入,因此在本实施例中,通过直接利用大数据集群本身的资源,基于待进行数据导入的原始数据计算相应的索引,再对原始数据进行转换处理、分类处理,以获取多个划分数据,并将各个划分数据分配至各个索引对应的分区表,在分区表中对划分数据进行合并压缩,并通过hdfs传递到目标集群,使得目标集群的配置要求大部分被限制在磁盘的IO上,对目标集群自身的CPU和内存的要求降低很多。并且在本实施例中是使用拆分数据到不同索引的方式,减少了单索引数据过于庞大带来的segement合并要求,提高了数据导入的效率,并且在目标集群中也无需考虑shard的划分,reduce任务的数据量可以通过map任务的hash求余计算而得到,除此之外,也做了索引划分的处理,防止单个庞大索引的出现,避免了在进行数据导入时,出现数据倾斜问题。
另外,为辅助理解本实施例中的数据导入原理理解,下面进行举例说明。
例如,如图4所示,确定待件数据导入的宽表数据(即原始数据),将宽表字段数据转化为整型类型枚举值,将宽表数据转换成json格式存储,使用hash(id)以及求余的方法,根据区间大小将数据分成五个分区(分区一、分区二、分区三、分区四、分区五、),即将原始数据进行数据转换处理得到目标数据,再将目标数据分类为五个划分数据,并对每个分区采用相同的处理方式进行,如对分区一执行MR任务,并在分区一的表中执行Map任务,根据hash和reduce个数进行求余处理,再将分区一得到的数据依次分配到各个reduce中(如reduce_1中数据,reduce_n中的数据),并对每个reduce采用相同的处理方式,即为每个reduce创建一个目标集群线程(如es_1),并将数据导入至该目标集群线程中,再进行合并处理,并进行快照处理,得到目标快照,将目标快照发送至HDFS中,经过HDFS发送目标集群中,在目标集群中进行快照恢复。
在本实施例中,通过将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;依次对具有所述划分数据的分区表创建索引,以获取各所述划分数据对应的目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。通过先将待进行数据导入的原始数据进行数据转换处理,得到目标数据,从而避免了将原始数据导入至目标集群后,再进行格式转换,浪费目标集群的资源的现象发生,并且会对目标数据进行分类,将分类后的各个划分数据分配至各自对应的分区表中,并创建相应的索引,得到各个目标分区表,再进行快照处理,得到各个目标快照,将各个目标快照发送至目标集群,从而避免了一次性发送过多的数据到目标集群,导致目标集群处理效率下降,使得目标集群接收数据的速度降低的现象发生,提高了数据导入的效率。
进一步地,基于本发明数据导入方法第一实施例,提出本发明数据导入方法第二实施例。本实施例是本发明第一实施例的步骤S40,对所述目标数据进行分类处理,以获取多个划分数据的步骤的细化,包括:
步骤a,获取所述目标数据中的所有子数据,基于预设的数据转换方式将各所述子数据转换为数值,并检测各所述数值中是否存在大于预设固定值的目标数值;
在本实施例中,需要获取目标数据所包含的所有子数据(如各个数据段),并根据预设的数据转换方式将各个子数据转换为数值。其中,数据转换方式是用户提前设置的任意转换方式,如对所有子数据hash处理,以获取各个数值,或根据提前设置的数据字符与数值对应关系表确定所有子数据对应的数值等,并在获取到各个数值后,需要检测各个数值中是否存在大于预设固定值的目标数值,并根据不同的检测结果执行不同的操作。
步骤u,若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据。
若存在大于预设固定值的目标数值。则需要对各个数值进行求余处理(即将各个数值依次除以某一设置值,将其余数作为划分数据),并将各个求余处理的求余结果作为划分数据。即对目标数据所在宽表中唯一键的字段(即子数据),做数据转换处理,如hash处理,转化为各个子数据对应的hash值,通过求余的方式,将经过hash处理后的hash值转换为小于某一预设固定值(用户提前设置的任意值,如100万)的数字,即求余结果。例如,假设对唯一键的字段(即子数据):osdlsssdaaww进行hash处理后得到1775361181,再对1775361181进行求余100万,得到361181(即求余结果)。其中,子数据可以是目标数据中携带的数据。预设固定值可以是用户提前设置的任意值,如100万。划分数据可以是子数据经过相应处理后产生的数据。但是若各个数值中不存在大于预设固定值的目标数值,则可以直接将各个数值作为划分数据。
在本实施例中,通过对目标数据中的所有子数据数据转换处理,得到各个数值,并在确定存在目标数值时,进行求余处理,得到多个划分数据,从而保障了获取到的划分数据的准确性。
进一步地,若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据的步骤之后,包括:
步骤b,基于所述原始数据对应的目标集群的可用资源确定待创建的索引的索引数量,并构建和所述索引数量相同数量的分区表,确定各所述分区表的取值范围,依次遍历各所述划分数据,将当前遍历的当前划分数据和各所述取值范围进行匹配;
在本实施例中,需要先确定原始数据对应的目标集群中的可用资源(如剩余cpu资源,剩余内存空间等),再根据可用资源和目标数据来确定需要拆分索引的索引数量。例如,若目标数据的数据量大于可用资源的可存储量,则可以将目标数据对应的索引拆分为5个。并根据索引数量创建分区表,即分区表的数量和索引数量是相同的,再为每个分区表赋予不同的取值范围。并依次遍历各个划分数据,将当前遍历的当前划分数据依次和各个取值范围进行匹配比较,并根据不同的匹配结果执行不同的操作。
步骤c,若在各所述取值范围中存在和所述当前划分数据匹配的目标取值范围,则将所述目标取值范围对应的分区表作为所述当前划分数据对应的分区表,直至各所述划分数据遍历完成。
当经过判断发现在各个取值范围中存在和当前划分数据匹配的目标取值范围时,可以直接将目标取值范围对应的分区表作为当前划分数据对应的分区表,并对所有划分数据都采用相同的操作,以确定各个划分数据对应的分区表。
在本实施例中,通过根据目标集群的可用资源确定索引数量,并创建和索引数量相同数量的分区表,再根据各个分区表的取值范围确定各个划分数据对应的分区表,从而保障了获取到的分区表的准确性。
进一步地,将各所述划分数据依次分配至各所述划分数据对应的分区表的步骤,包括:
步骤d,将各所述划分数据依次分配至各所述划分数据对应的分区表,依次遍历各所述分区表,并对当前遍历的当前分区表中预设的归约任务个数进行求余处理,根据所述求余处理结果将所述当前分区表中的划分数据分配至各所述归约任务中,直至各所述分区表遍历完成。
在本实施例中,将各个划分数据依次分配至各个划分数据对应的分区表后,会对各个分区表都采用相同的操作,即依次遍历各个分区表,并对当前遍历的当前分区表中预设的reduce(即归约任务)进行求余处理(即根据接收的划分数据的数据量大小对预设的reduce中的值进行求余处理),根据求余结果可以得到各个reduce可执行的执行数据量,再将当前分区表中的划分数据根据执行数据量分别存储至各个reduce中,并且会为每一个reduce建立一个私有的目标集群进程,并将该目标集群进程对应的reduce中的数据导入至该目标集群进程中,直至各个分区表遍历完成。其中,归约任务是用于将分区表中分配的数据进行合并处理,即将数据的多个小的数据段合并成大的数据段。
在本实施例中,通过将各个划分数据依次分配至各个分区表,再对当前遍历的当前分区表中的所有reduce进行求余处理,确定存储数据量,再根据各个存储数据量将当前分区表中的划分数据存储至各个reduce,从而保障了分区表的稳定性。
进一步地,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照的步骤,包括:
步骤e,依次遍历各所述目标分区表,获取当前遍历的当前目标分区表中的多个数据段,并根据各所述数据段的属性进行合并处理,以获取目标数据段,并将具有所述目标数据段的当前目标分区表进行快照处理,以获取所述当前目标分区表对应的目标快照,直至各所述目标分区表遍历完成。
在本实施例中,需要依次对各个分区表进行遍历处理,并获取当前遍历的当前分区表中的多个数据段(即划分数据所携带的数据段),再确定各个数据段的属性(如性别、年龄等),并将属于相同属性的数据段进行合并处理,得到目标数据段(即此时获取到的目标数据段可能存在多个,也可能只存在一个),再对具有目标数据段的当前目标分区表进行快照处理,以获取当前目标分区表对应的目标快照,直至各个目标分区表遍历完成,即对所有目标分区表采用相同的操作,并将获取到的各个目标分区表对应的目标快照发送至HDFS中,再经过HDFS传递到目标集群。
在本实施例中,通过遍历各个目标分区表,并将当前目标分区表中的数据段按照其属性进行合并处理,得到目标数据段,再对当前目标分区表进行快照处理,得到目标快照,直至各个目标分区表遍历完成,从而提高了数据导入的效率。
进一步地,将各所述目标快照发送至所述原始数据对应的目标集群的步骤,包括:
步骤f,将各所述目标快照发送至HDFS,并通过所述HDFS将所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群对接收的各所述目标快照进行快照恢复,以获取各所述目标快照中的快照数据和索引,并检测各所述快照数据是否和所述目标集群中的历史数据匹配,若均不匹配,则对各所述索引进行合并处理,并将各所述快照数据写入至所述目标集群。
在本实施例中,需要将各个目标快照发送至HDFS中,同时目标集群中的程序会定时扫描HDFS上的快照文件目录,将HDFS新增的快照都转存到目标集群中。在目标集群中,会对接收的各个目标快照进行快照恢复处理,得到各个目标快照中的快照数据和索引,并检测各个快照数据是否和目标集群中的历史数据(目标集群中已存储的数据)匹配,并在不匹配时,将各个快照数据写入至目标集群,将各个索引进行合并处理。也就是读取快照中的元数据,以及segement信息,对应各个segement要写入的shard(数据分片),通过与目标集群本身的shard的segement进行对比,若发现重复,则不写入到目标集群,若不重复,则写入到目标集群,并且会通过别名的方式合并所述目标快照对应的索引。
在本实施例中,通过将各个目标快照发送至HDFS,再导入至目标集群,并在目标集群中进行快照恢复并写入,从而保障了数据导入的有效进行。
进一步地,将待进行数据导入的原始数据进行数据转换处理,以获取目标数据的步骤,包括:
步骤g,将待进行数据导入的原始数据进行数据转换处理,以获取整型数据,并根据预设格式对所述整型数据进行格式转换,以获取目标数据。
在本实施例中,将待进行数据导入的原始数据进行数据转换处理,以获取整型数据,即将原始数据所在宽表中,每个字段的数据的所有非空的枚举值都进行编码处理,并将经过编码处理产生的各类字符串形式的数据转换为整型数据,并将整型数据和原始数据的对应关系存储至维度表中。例如,原始数据为sex:男,女,则进行编码处理转化后的整型数据就为sex:0,1。再对整型数据进行预设格式(如json格式)转换,得到目标数据。例如,若整型数据为:
sex age
0 1
则进行转换后的目标数据就为“sex”:“0”,“sex”:“1”。其中,整型数据可以是对原始数据经过编码处理后的数据。
在本实施例中,通过将待进行数据导入的原始数据进行数据转换处理,得到整型数据,并进行格式转换得到目标数据,从而避免了将原始数据导入至目标集群后,再进行格式转换,浪费目标集群的资源的现象发生,提高了数据导入的效率。
本发明还提供一种数据导入装置,参照图3,所述数据导入装置包括:
数据转换模块A10,用于将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;
分配模块A20,用于对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;
获取模块A30,用于依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;
发送模块A40,用于将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。
可选地,所述分配模块A20,还用于:
获取所述目标数据中的所有子数据,基于预设的数据转换方式将各所述子数据转换为数值,并检测各所述数值中是否存在大于预设固定值的目标数值;
若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据。
可选地,所述分配模块A20,还用于:
基于所述原始数据对应的目标集群的可用资源确定索引的索引数量,并构建和所述索引数量相同数量的分区表,确定各所述分区表的取值范围,依次遍历各所述划分数据,将当前遍历的当前划分数据和各所述取值范围进行匹配;
若在各所述取值范围中存在和所述当前划分数据匹配的目标取值范围,则将所述目标取值范围对应的分区表作为所述当前划分数据对应的分区表,直至各所述划分数据遍历完成。
可选地,所述分配模块A20,还用于:
将各所述划分数据依次分配至各所述划分数据对应的分区表,依次遍历各所述分区表,并对当前遍历的当前分区表中预设的归约任务个数进行求余处理,根据所述求余处理结果将所述当前分区表中的划分数据分配至各所述归约任务中,直至各所述分区表遍历完成。
可选地,所述获取模块A30,还用于:
依次遍历各所述目标分区表,获取当前遍历的当前目标分区表中的多个数据段,并根据各所述数据段的属性进行合并处理,以获取目标数据段,并将具有所述目标数据段的当前目标分区表进行快照处理,以获取所述当前目标分区表对应的目标快照,直至各所述目标分区表遍历完成。
可选地,所述发送模块A40,还用于:
将各所述目标快照发送至HDFS,并通过所述HDFS将所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复,以获取各所述目标快照中的快照数据和索引,并检测各所述快照数据是否和所述目标集群中的历史数据匹配,若均不匹配,则对各所述索引进行合并处理,并将各所述快照数据写入至所述目标集群。
可选地,所述数据转换模块A10,还用于:
将待进行数据导入的原始数据进行数据转换处理,以获取整型数据,并根据预设格式对所述整型数据进行格式转换,以获取目标数据。
上述各程序单元所执行的方法可参照本发明数据导入方法各个实施例,此处不再赘述。
本发明还提供一种数据导入设备,该数据导入设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的数据导入程序,数据导入程序被处理器执行时实现如上所述的数据导入方法的步骤。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有数据导入程序,所述数据导入程序被处理器执行时实现如上所述的数据导入方法的步骤。
其中,在所述处理器上运行的数据导入程序被执行时所实现的方法可参照本发明数据导入方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据导入方法,其特征在于,所述数据导入方法包括如下步骤:
将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;
对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;
依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;
将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。
2.如权利要求1所述的数据导入方法,其特征在于,所述对所述目标数据进行分类处理,以获取多个划分数据的步骤,包括:
获取所述目标数据中的所有子数据,基于预设的数据转换方式将各所述子数据转换为数值,并检测各所述数值中是否存在大于预设固定值的目标数值;
若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据。
3.如权利要求2所述的数据导入方法,其特征在于,所述若存在,则对各所述数值进行求余处理,并将所述求余处理的求余结果作为划分数据的步骤之后,包括:
基于所述原始数据对应的目标集群的可用资源确定待创建的索引的索引数量,并构建和所述索引数量相同数量的分区表,确定各所述分区表的取值范围,依次遍历各所述划分数据,将当前遍历的当前划分数据和各所述取值范围进行匹配;
若在各所述取值范围中存在和所述当前划分数据匹配的目标取值范围,则将所述目标取值范围对应的分区表作为所述当前划分数据对应的分区表,直至各所述划分数据遍历完成。
4.如权利要求1所述的数据导入方法,其特征在于,所述将各所述划分数据依次分配至各所述划分数据对应的分区表的步骤,包括:
将各所述划分数据依次分配至各所述划分数据对应的分区表,依次遍历各所述分区表,并对当前遍历的当前分区表中预设的归约任务个数进行求余处理,根据所述求余处理结果将所述当前分区表中的划分数据分配至各所述归约任务中,直至各所述分区表遍历完成。
5.如权利要求1所述的数据导入方法,其特征在于,所述对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照的步骤,包括:
依次遍历各所述目标分区表,获取当前遍历的当前目标分区表中的多个数据段,并根据各所述数据段的属性进行合并处理,以获取目标数据段,并将具有所述目标数据段的当前目标分区表进行快照处理,以获取所述当前目标分区表对应的目标快照,直至各所述目标分区表遍历完成。
6.如权利要求1所述的数据导入方法,其特征在于,所述将各所述目标快照发送至所述原始数据对应的目标集群的步骤,包括:
将各所述目标快照发送至HDFS,并通过所述HDFS将所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复,以获取各所述目标快照中的快照数据和索引,并检测各所述快照数据是否和所述目标集群中的历史数据匹配,若均不匹配,则对各所述索引进行合并处理,并将各所述快照数据写入至所述目标集群。
7.如权利要求1-6任一项所述的数据导入方法,其特征在于,所述将待进行数据导入的原始数据进行数据转换处理,以获取目标数据的步骤,包括:
将待进行数据导入的原始数据进行数据转换处理,以获取整型数据,并根据预设格式对所述整型数据进行格式转换,以获取目标数据。
8.一种数据导入装置,其特征在于,所述数据导入装置包括:
数据转换模块,用于将待进行数据导入的原始数据进行数据转换处理,以获取目标数据;
分配模块,用于对所述目标数据进行分类处理,以获取多个划分数据,并将各所述划分数据依次分配至各所述划分数据对应的分区表;
获取模块,用于依次对具有所述划分数据的分区表创建索引,以获取具有所述索引的各目标分区表,对各所述目标分区表进行快照处理,以获取各所述目标分区表对应的目标快照;
发送模块,用于将各所述目标快照发送至所述原始数据对应的目标集群,其中,所述目标集群依次对接收的各所述目标快照进行快照恢复。
9.一种数据导入设备,其特征在于,所述数据导入设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据导入程序,所述数据导入程序被所述处理器执行时实现如权利要求1至7中任一项所述的数据导入方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有数据导入程序,所述数据导入程序被处理器执行时实现如权利要求1至7中任一项所述的数据导入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010625565.4A CN111767287A (zh) | 2020-06-30 | 2020-06-30 | 数据导入方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010625565.4A CN111767287A (zh) | 2020-06-30 | 2020-06-30 | 数据导入方法、装置、设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111767287A true CN111767287A (zh) | 2020-10-13 |
Family
ID=72723533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010625565.4A Pending CN111767287A (zh) | 2020-06-30 | 2020-06-30 | 数据导入方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767287A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297224A (zh) * | 2021-05-31 | 2021-08-24 | 上海艾麒信息科技股份有限公司 | 一种基于Redis的海量数据分类存储方法及系统 |
-
2020
- 2020-06-30 CN CN202010625565.4A patent/CN111767287A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297224A (zh) * | 2021-05-31 | 2021-08-24 | 上海艾麒信息科技股份有限公司 | 一种基于Redis的海量数据分类存储方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10374792B1 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
CN106339254B (zh) | 一种虚拟机快速启动方法、装置及管理节点 | |
CN108256076B (zh) | 分布式海量数据处理方法及装置 | |
US10783163B2 (en) | Instance-based distributed data recovery method and apparatus | |
US11075991B2 (en) | Partitioning data according to relative differences indicated by a cover tree | |
Siddiqui et al. | Pseudo-cache-based IoT small files management framework in HDFS cluster | |
US9619501B2 (en) | Index scan device and index scan method | |
WO2013185852A1 (en) | A system and method to store video fingerprints on distributed nodes in cloud systems | |
US11221890B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
Moise et al. | Terabyte-scale image similarity search: experience and best practice | |
CN108052535B (zh) | 基于多处理器平台的视觉特征并行快速匹配方法和系统 | |
CN104035822A (zh) | 一种低开销的高效内存去冗余方法及系统 | |
US10558636B2 (en) | Index page with latch-free access | |
WO2022007596A1 (zh) | 图像检索系统、方法和装置 | |
CN112912870A (zh) | 租户标识符的转换 | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
CN105426119A (zh) | 一种存储设备及数据处理方法 | |
US11030177B1 (en) | Selectively scanning portions of a multidimensional index for processing queries | |
Cheng et al. | A Multi-dimensional Index Structure Based on Improved VA-file and CAN in the Cloud | |
CN111767287A (zh) | 数据导入方法、装置、设备及计算机存储介质 | |
CN111125216B (zh) | 数据导入Phoenix的方法及装置 | |
Romero et al. | Bolt: Fast inference for random forests | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
US20200250233A1 (en) | Inserting datasets into database systems utilizing hierarchical value lists | |
US20230138113A1 (en) | System for retrieval of large datasets in cloud environments |
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 |