CN109829015A - 基于HBase的金融数据存储方法、装置以及存储介质 - Google Patents
基于HBase的金融数据存储方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN109829015A CN109829015A CN201910041584.XA CN201910041584A CN109829015A CN 109829015 A CN109829015 A CN 109829015A CN 201910041584 A CN201910041584 A CN 201910041584A CN 109829015 A CN109829015 A CN 109829015A
- Authority
- CN
- China
- Prior art keywords
- finance data
- hbase
- finance
- data file
- data
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于HBase的金融数据存储方法、装置以及存储介质。其中,该方法,包括:调取金融数据文件;根据所述金融数据文件中包括的多个属性的参数值,生成行键,其中所述多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及根据所述行键,将所述金融数据文件中的金融数据导入HBase存储系统。本公开通过将海量金融领域的交易数据,存储在HBase存储系统中,实现了金融数据的合理存储和业务的快速查询与计算的技术效果。进而解决了现有技术中存在的由于将金融数据存储在关系型数据库、本地磁盘或数据仓库中,造成了无法实现海量金融数据的合理存储、高频查询以及快速计算的技术问题。
Description
技术领域
本申请涉及金融数据存储领域,特别是涉及一种基于HBase的金融数据存储方法、装置以及存储介质。
背景技术
金融数据,涉及金融领域的股票、期权、期货以及每个交易日从开盘到收盘的数据记录,数据记录为毫秒级,造成该类数据历史基数、日增量都相对庞大,如此海量的历史数据和日增量数据对于存储设备、业务的快速查询与分析产生了巨大的挑战。当前主要采用关系型数据库或者直接存储于本地磁盘的方式对金融数据进行存储和处理。此类存储方法的存储和查询计算效率低下,并不能很好地服务于具有高频、实时、数据字段变化特点的金融领域的量化分析、交易业务。现有的以CSV文件形式存储于本地磁盘技术中,查询过程复杂,每次查询都需要解析一次所需CSV文件,效率低下,不能实现海量金融数据合理存储、快速查询与响应的问题;以及内存中对数据预处理需多批次进行,耗时严重问题等。
针对上述的现有技术中存在的由于将金融数据存储在关系型数据库、本地磁盘或数据仓库中,造成了无法实现海量金融数据的合理存储、高频查询以及快速计算的技术问题,目前尚未提出有效的解决方案。
发明内容
本公开的实施例提供了一种基于HBase的金融数据存储方法、装置以及存储介质,以至少解决现有技术中存在的由于将金融数据存储在关系型数据库、本地磁盘或数据仓库中,造成了无法实现海量金融数据的合理存储、高频查询以及快速计算的技术问题。
根据本公开实施例的一个方面,提供了一种基于HBase的金融数据存储方法,包括:调取金融数据文件;根据金融数据文件中包括的多个属性的参数值,生成行键,其中多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及根据行键,将金融数据文件中的金融数据导入HBase存储系统。
根据本公开实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
根据本公开实施例的另一个方面,还提供了一种基于HBase的金融数据存储装置,包括:调取模块,用于调取金融数据文件;第一生成模块,用于根据金融数据文件中包括的多个属性的参数值,生成行键,其中多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及导入模块,用于根据行键,将金融数据文件中的金融数据导入HBase存储系统。
根据本公开实施例的另一个方面,还提供了一种基于HBase的金融数据存储装置,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:调取金融数据文件;根据金融数据文件中包括的多个属性的参数值,生成行键,其中多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及根据行键,将金融数据文件中的金融数据导入HBase存储系统。
在本公开实施例中,由于HBase表字段以列存储为特点,对于不同数据字段,通过增删列来上传数据,无需对历史表数据重写、迁移,方便快捷,不易丢失。并且HBase存储系统300具有强大的查询机制,可以通过行键作为查询条件对所查询数据快速定位获取。从而,本公开通过将海量金融领域的交易数据,存储在HBase存储系统300中,实现了金融数据的合理存储和业务的快速查询与计算的技术效果。进而解决了现有技术中存在的由于将金融数据存储在关系型数据库、本地磁盘或数据仓库中,造成了无法实现海量金融数据的合理存储、高频查询以及快速计算的技术问题。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是用于实现根据本公开实施例1所述的方法的计算机终端的硬件结构框图;
图2是根据本公开实施例1所述的基于HBase的金融数据存储系统的示意图;
图3是根据本公开实施例1的第一个方面所述的基于HBase的金融数据存储方法的流程示意图;
图4是根据本公开实施例1的第一个方面所述的行键的组成示意图;
图5是根据本公开实施例1的第一个方面所述的各分区(Region)对应累计数据大小的统计图;
图6是根据本公开实施例2所述的基于HBase的金融数据存储装置的示意图;以及
图7是根据本公开实施例3所述的基于HBase的金融数据存储装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本实施例,提供了一种基于HBase的金融数据存储方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现基于HBase的金融数据存储方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本公开实施例中的基于HBase的金融数据存储方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的基于HBase的金融数据存储方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
图2是根据本实施例所述的基于HBase的金融数据存储系统的示意图。参照图2所示,该系统包括:HBase存储系统300。其中HBase存储系统300部署在Hadoop集群上。HBase存储系统300包括有HDFS文件系统310以及HBase其他组件320。并且HBase存储系统300还包括Zookeeper(未示出),用于协调HBase存储系统和HDFS文件系统310之间的服务。HBase存储系统300中的主节点负责HBase集群的管理和调度,从节点负责数据的存储。每个节点上运行的Zookeeper作为主节点和从节点之间的服务协调组件。需要说明的是,系统中的HBase存储系统300可适用上面所述的硬件结构。
在上述运行环境下,根据本实施例的第一个方面,提供了一种基于HBase的金融数据存储方法,该方法由图2中所示的HBase存储系统300实现。图3示出了该方法的流程示意图,参考图3所示,该方法包括:
S302:调取金融数据文件;
S304:根据金融数据文件中包括的多个属性的参数值,生成行键,其中多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及
S306:根据行键,将金融数据文件中的金融数据导入HBase存储系统。
正如背景技术中所述的那样,金融数据,涉及金融领域的股票、期权、期货以及每个交易日从开盘到收盘的数据记录,数据记录为毫秒级,造成该类数据历史基数、日增量都相对庞大,如此海量的历史数据和日增量数据对于存储设备、业务的快速查询与分析产生了巨大的挑战。当前主要采用关系型数据库或者直接存储于本地磁盘的方式对金融数据进行存储和处理。此类存储方法的存储和查询计算效率低下,并不能很好地服务于具有高频、实时、数据字段变化特点的金融领域的量化分析、交易业务。现有的以CSV文件形式存储于本地磁盘技术中,查询过程复杂,每次查询都需要解析一次所需CSV文件,效率低下,不能实现海量金融数据合理存储、快速查询与响应的问题;以及内存中对数据预处理需多批次进行,耗时严重问题等。
针对上述的现有技术中存在的由于将金融数据存储在关系型数据库、本地磁盘或数据仓库中,造成了无法实现海量金融数据的合理存储、高频查询以及快速计算的技术问题,本实施通过HBase存储系统300首先调取金融数据文件。例如但不限于,HBase存储系统300可以从本地磁盘、关系型数据库或数据源API接口调取金融数据文件。然后根据金融数据文件中包括的多个属性的参数值,生成行键(Rowkey)。其中金融数据文件中包括的多个属性可以为以下至少任意一项:股票代码、股票类型、交易日期以及交易时间等。例如:行键(Rowkey)=股票代码+股票类型+交易日期;或者行键(Rowkey)=股票代码+股票类型+交易日期+交易时间。对于已经确定了行键(Rowkey)的金融数据可以做存储操作,然后HBase存储系统300根据所确定的行键(Rowkey),将金融数据文件中的金融数据导入HBase存储系统310中。需要特别说明的是,金融数据文件中包括的金融数据最后以HFile形式存储至HBase存储系统300中包括的HDFS文件系统310上。
由于HBase表字段以列存储为特点,对于不同数据字段,通过增删列来上传数据,无需对历史表数据重写、迁移,方便快捷,不易丢失。并且HBase存储系统300具有强大的查询机制,可以通过行键作为查询条件对所查询数据快速定位获取。从而,本实施例通过将海量金融领域的交易数据,存储在HBase存储系统300中,实现了金融数据的合理存储和业务的快速查询与计算的技术效果。进而解决了现有技术中存在的由于将金融数据存储在关系型数据库、本地磁盘或数据仓库中,造成了无法实现海量金融数据的合理存储、高频查询以及快速计算的技术问题。
可选地,根据金融数据文件中包括的多个属性的参数值,生成行键的操作,包括:确定交易日序号,其中交易日序号用于指示金融数据文件中的金融数据交易日在全年交易日中所属的顺位;遍历金融数据文件,确定金融数据文件中包括的多个属性的参数值;以及根据多个属性的参数值,并通过数据加盐(Salting)的方式,生成行键,其中数据加盐(Salting)用于指示将交易日序号作为行键的前缀。
具体地,HBase存储系统300生成行键的操作,包括:确定交易日序号。其中交易日序号用于指示金融数据文件中的金融数据交易日在全年交易日中所属的顺位。例如:对历史数据每一年交易日按日期从早到晚,以所属第几个交易日为序号,生成“交易日-序号”字典D。其中,以2016年与2017年为例,每年的交易日共有244天,则序号可设为001~244,则有:
2016年字典D2016={20160104:001,20160105:002,…,20161230:244},
2017年字典D2017={20170103:001,20170104:002,…,20171229:244}。
进一步地,若金融数据文件中包括的金融数据为交易日为20170103,此时,HBase存储系统300根据字典D,通过映射确定该交易日序号为001。然后HBase存储系统300遍历金融数据文件,确定金融数据文件中包括的多个属性的参数值。例如:金融数据文件中包括的多个属性为股票代码、股票类型以及交易日期。股票代码为000001;股票类型为股票所属交易所,例如,若股票所属交易所为上海交易所(SH),则用“0”表示,若股票所属交易所为深圳交易所(SZ),则用“1”表示,在遍历金融数据文件之后,得知股票所属交易所为上海交易所(SH),以及交易日期为2017年01月03日。
进一步地,HBase存储系统300根据多个属性的参数值,并通过数据加盐(Salting)的方式,生成行键。例如:由于数据加盐(Salting)用于指示将交易日序号作为行键的前缀,因此行键=001000001020170103,代表2017年第一个交易日20170103的“SH”的金融数据。从而,通过把每一年中的每个交易日的字典序号,作为前缀,一方面,满足了金融数据尽可能均匀分布到HBase存储系统300的各个数据节点中,避免了热点写问题;另一方面,业务查询过程中,目标数据存储在不同数据节点上,避免了热点查问题。使得HBase存储系统300负载均衡,金融数据写入、业务查询与计算性能得到充分地发挥,很好地满足业务需求,既保障了金融数据存储的安全性又满足了快速查询的业务需求。
可选地,多个属性包括股票代码、股票类型以及交易日期,并且根据行键,将金融数据文件中的金融数据导入HBase存储系统的操作,包括:根据行键,将金融数据文件中包括的全部金融数据作为整体导入HBase存储系统300。
具体地,多个属性包括股票代码、股票类型以及交易日期。如上述所示,HBase存储系统300根据多个属性的参数值,所生成的行键为金融数据文件中包括的全部金融数据的唯一标识。此时,HBase存储系统300需要将金融数据文件中包括的全部金融数据作为一个整体,并根据所生成的行键,将全部金融数据作为整体导入HBase存储系统300中。
可选地,多个属性包括股票代码、股票类型、交易日期以及交易时间,并且根据行键,将金融数据文件中的金融数据导入HBase存储系统的操作,包括:对金融数据文件中包括的每行金融数据进行解析;以及根据行键,将金融数据文件中包括的每行金融数据逐条导入HBase存储系统300。
具体地,多个属性包括股票代码、股票类型、交易日期以及交易时间。HBase存储系统300对金融数据文件中包括的每行金融数据进行解析,为了确保行键(Rowkey)的唯一性,多个属性中需要包括交易时间,此时生成的行键(Rowkey)与每行金融数据结合之后才具有唯一的标识作用。例如:图4示出了行键(Rowkey)的组成示意图。参照图4所示,行键(Rowkey)=001000001120170103093031000,代表2017年第一个交易日20170103日,交易时间为“09:30:31”的“SH”的金融数据。然后HBase存储系统300根据行键,将金融数据文件中包括的每行金融数据逐条导入HBase存储系统300。
可选地,还包括:根据全年交易日的数量,确定分区的数量,其中每一分区用于存储每一交易日产生的所有金融数据;以及根据所确定的分区的数量,生成HBase表。
具体地,图5示出了各分区(Region)对应累计数据大小的统计图。参照图5所示,横轴代表每年的第i个交易日,纵轴代表2010-2018年历史金融数据总量。每个分区Rowkey的前缀与分区startKey对应,对2010-2018年历史金融数据按照交易日次序字典D,对应累加,可以得到每个Region对应的累计数据大小。由图5可知,分区(Region)存储的数据量在30G左右波动,分布均匀,无热点问题,性能优良。
因此,HBase存储系统300根据全年交易日的数量,确定分区的数量。例如:2010至2017年的交易日数量分别为{242,244,243,238,245,244,244,244},即每年交易日数量不超过245个;另外,官方建议每个数据节点(HRegionServer)的分区(Region)的数量不超过200,因此,为保证不产生热点问题,即导入数据过于集中于某些分区(Region)或者某个数据节点(HRegionServer)上,所有数据节点(HRegionServer)上分区(Region)数量总计设置为245个,数据节点(HRegionServer)的个数不小于2,startKey分别为[001-245],每个分区(Region)大小初步设置为50G,可以根据历史数据总量、日增量数据大小和预计存储到未来某一日期进行调整。需要特别说明的是,分区大小阈值和后续数据量超过阈值,是两件事情,不冲突。前者:分区数*分区大小阈值=预计存储总量。后者:数据超过阈值,分区可以进行拆分。最后,HBase存储系统300根据所确定的分区的数量,生成HBase表。其中可以通过在主节点上执行hbase shell命令生成HBase表,也可以通过程序生成HBase表。
可选地,还包括:获取与金融数据文件相关的增量数据;判断分区存储的金融数据是否超过预设的阈值;以及在分区存储的金融数据超过预设的阈值的情况下,对分区进行拆分,并将增量数据存储至拆分后生成的分区。
具体地,HBase存储系统300获取与金融数据文件相关的增量数据,然后判断存储有金融数据文件中的金融数据的分区是否超过了预先设置的容量阈值。由于HBase存储系统300参数设定了每个分区的容量阈值,因此可以通过程序自动检测,如果超过阈值,HBase存储系统300可对分区进行拆分处理。然后,在判断分区存储的金融数据超过预设的阈值的情况下,HBase存储系统300对分区进行拆分处理,并将增量数据存储至拆分后生成的分区。从而,通过这种方式,防止大数据量插入的热点问题,提高数据插入的效率。
可选地,根据金融数据文件中包括的多个属性的参数值,生成行键的操作之前,包括:对金融数据文件进行校验,判断金融数据文件中的金融数据是否异常;以及在金融数据异常的情况下,对金融数据进行校正处理。
具体地,HBase存储系统300在调取金融数据文件之后,并在生成行键之前,需要对金融数据文件进行校验,并判断金融数据文件中包括的金融数据是否异常。例如:判断金融数据的列数是否错误以及字段是否错误等。以及在判断金融数据异常的情况下,HBase存储系统300对金融数据进行校正处理。从而,通过这种方式,保证了导入HBase存储系统300中的金融数据的准确性。
可选地,该方法还包括:设置合理的Hadoop、HBase集群参数。
具体地,为防止Region自动拆分,造成系统性能差的问题,设定拆分策略为ConstantSizeRegionSplitPolicy策略,或者KeyPrefixRegionSplitPolicy策略;因此设置hbase.hregion.max.filesize单个Region大小为50G或者更高;并且HBase内存在硬件允许情况下,越大越好。通过这种方式,避免了Region的自动拆分,进而提高了HBase存储系统300的性能。
可选地,还包括:接收用户发送的查询请求,其中查询请求用于指示请求查询与业务需求相关的业务数据;生成与业务需求对应的行键;以及根据与业务需求对应的行键,从HBase存储系统中获取业务数据。
具体地,金融量化交易策略需要有全面、快速的行情数据支持,因此对数据存储系统的查询性能有很大的挑战。HBase存储系统300可以对确定行键(Rowkey)的查询业务,提供快速的查询结果相应。因此在HBase存储系统300接收到用户发送的查询请求时,其中,该查询请求用于指示用户请求查询与业务需求相关的业务数据,HBase存储系统300通过META表中记录的Rowkey和Region的映射关系,可以快速定位到Region,避免了全表扫描,大大提高了响应速度。常见的业务查询需求有:查询某只股票(股票代码、SH or SZ),在某一日期区间内、某一时间段内的所有交易数据;如查询股票代码为000001的SH股票,在20170104-20181214日期区间、09:30-10:30时间段内所有的交易数据。通过这种方式,大大提升了查询的速度。
此外,参考图1所示,根据本实施例的第二个方面,提供了一种存储介质104。存储介质104包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
从而,本实施例通过采取搭建HBase集群的数据存储技术,结合HBase以列存储的特点,通过配置合理的Hadoop、HBase集群参数,并结合金融行情交易数据特点,设计合理的HBase表结构,将TB级金融行情交易数据存储在HBase集群中,用以达到金融数据的合理存储和业务的快速查询与计算的目的。进而达到的效果具体如下:
(1)可以有效地将海量历史数据存储管理起来,结合HDFS备份原理,具备强大的容灾机制。
(2)可以通过增加廉价的PC机,扩展系统存储容量,并通过HBase压缩算法,对数据进行压缩处理,性价比高。
(3)HBase表字段以列存储为特点,对于不同数据字段,通过增删列来上传数据,无需对历史表数据重写、迁移,方便快捷,不易丢失。
(4)可以通过HBase存储系统强大的查询机制,能够对所查询数据快速定位获取。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
图6示出了根据本实施例所述的基于HBase的金融数据存储装置600,该装置600与根据实施例1的第一个方面所述的方法相对应。参考图6所示,该装置600包括:调取模块610,用于调取金融数据文件;第一生成模块620,用于根据金融数据文件中包括的多个属性的参数值,生成行键,其中多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及导入模块630,用于根据行键,将金融数据文件中的金融数据导入HBase存储系统。
可选地,第一生成模块620,包括:第一确定子模块,用于确定交易日序号,其中交易日序号用于指示金融数据文件中的金融数据交易日在全年交易日中所属的顺位;第二确定子模块,用于遍历金融数据文件,确定金融数据文件中包括的多个属性的参数值;以及生成子模块,用于根据多个属性的参数值,并通过数据加盐(Salting)的方式,生成行键,其中数据加盐(Salting)用于指示将交易日序号作为行键的前缀。
可选地,多个属性包括股票代码、股票类型以及交易日期,并且导入模块,包括:第一导入子模块,用于根据行键,将金融数据文件中包括的全部金融数据作为整体导入HBase存储系统。
可选地,多个属性包括股票代码、股票类型、交易日期以及交易时间,并且导入模块,包括:解析子模块,用于对金融数据文件中包括的每行金融数据进行解析;以及第二导入子模块,用于根据行键,将金融数据文件中包括的每行金融数据逐条导入HBase存储系统。
可选地,还包括:确定模块,用于根据全年交易日的数量,确定分区的数量,其中每一分区用于存储每一交易日产生的所有金融数据;以及第二生成模块,用于根据所确定的分区的数量,生成HBase表。
可选地,还包括:获取模块,用于获取与金融数据文件相关的增量数据;第一判断模块,用于判断分区存储的金融数据是否超过预设的阈值;以及拆分模块,用于在分区存储的金融数据超过预设的阈值的情况下,对分区进行拆分,并将增量数据存储至拆分后生成的分区。
可选地,还包括:第二判断模块,用于在根据金融数据文件中包括的多个属性的参数值,生成行键的操作之前,对金融数据文件进行校验,判断金融数据文件中的金融数据是否异常;以及校正处理模块,用于在金融数据异常的情况下,对金融数据进行校正处理。
可选地,还包括:设置模块,用于设置合理的Hadoop、HBase集群参数。
可选地,还包括:需求接收模块,用于接收用户发送的查询请求,其中查询请求用于指示请求查询与业务需求相关的业务数据;第三生成模块,用于生成与业务需求对应的行键;以及获取模块,用于根据与业务需求对应的行键,从HBase存储系统中获取业务数据。
从而根据本实施例,通过采取搭建HBase集群的数据存储技术,结合HBase以列存储的特点,通过配置合理的Hadoop、HBase集群参数,并结合金融行情交易数据特点,设计合理的HBase表结构,将TB级金融行情交易数据存储在HBase集群中,用以达到金融数据的合理存储和业务的快速查询与计算的目的。进而达到的效果具体如下:1)可以有效地将海量历史数据存储管理起来,结合HDFS备份原理,具备强大的容灾机制;2)可以通过增加廉价的PC机,扩展系统存储容量,并通过HBase压缩算法,对数据进行压缩处理,性价比高;3)HBase表字段以列存储为特点,对于不同数据字段,通过增删列来上传数据,无需对历史表数据重写、迁移,方便快捷,不易丢失;4)可以通过HBase存储系统强大的查询机制,能够对所查询数据快速定位获取。
实施例3
图7示出了根据本实施例所述的基于HBase的金融数据存储装置700,该装置700与根据实施例1的第一个方面所述的方法相对应。参考图7所示,该装置700包括:处理器710;以及存储器720,与处理器710连接,用于为处理器710提供处理以下处理步骤的指令:调取金融数据文件;根据金融数据文件中包括的多个属性的参数值,生成行键,其中多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及根据行键,将金融数据文件中的金融数据导入HBase存储系统。
可选地,根据金融数据文件中包括的多个属性的参数值,生成行键的操作,包括:确定交易日序号,其中交易日序号用于指示生成金融数据文件中的金融数据的交易日在全年交易日中所属的顺位;遍历金融数据文件,确定金融数据文件中包括的多个属性的参数值;以及根据多个属性的参数值,并通过数据加盐(Salting)的方式,生成行键,其中数据加盐(Salting)用于指示将交易日序号作为行键的前缀。
可选地,多个属性包括股票代码、股票类型以及交易日期,并且根据行键,将金融数据文件中的金融数据导入HBase存储系统的操作,包括:根据行键,将金融数据文件中包括的全部金融数据作为整体导入HBase存储系统。
可选地,多个属性包括股票代码、股票类型、交易日期以及交易时间,并且根据行键,将金融数据文件中的金融数据导入HBase存储系统的操作,包括:对金融数据文件中包括的每行金融数据进行解析;以及根据行键,将金融数据文件中包括的每行金融数据逐条导入HBase存储系统。
可选地,存储器720还用于为处理器710提供处理以下处理步骤的指令:根据全年交易日的数量,确定分区的数量,其中每一分区用于存储每一交易日产生的所有金融数据;以及根据所确定的分区的数量,生成HBase表。
可选地,存储器720还用于为处理器710提供处理以下处理步骤的指令:获取与金融数据文件相关的增量数据;判断分区存储的金融数据是否超过预设的阈值;以及在分区存储的金融数据超过预设的阈值的情况下,对分区进行拆分,并将增量数据存储至拆分后生成的分区。
可选地,存储器720还用于为处理器710提供处理以下处理步骤的指令:在根据金融数据文件中包括的多个属性的参数值,生成行键的操作之前,对金融数据文件进行校验,判断金融数据文件中的金融数据是否异常;以及在金融数据异常的情况下,对金融数据进行校正处理。
可选地,存储器720还用于为处理器710提供处理以下处理步骤的指令:设置合理的Hadoop、HBase集群参数。
可选地,存储器720还用于为处理器710提供处理以下处理步骤的指令:接收用户发送的查询请求,其中所述查询请求用于指示请求查询与业务需求相关的业务数据;生成与业务需求对应的行键;以及根据与业务需求对应的行键,从HBase存储系统中获取业务数据。
从而根据本实施例,通过采取搭建HBase集群的数据存储技术,结合HBase以列存储的特点,通过配置合理的Hadoop、HBase集群参数,并结合金融行情交易数据特点,设计合理的HBase表结构,将TB级金融行情交易数据存储在HBase集群中,用以达到金融数据的合理存储和业务的快速查询与计算的目的。进而达到的效果具体如下:1)可以有效地将海量历史数据存储管理起来,结合HDFS备份原理,具备强大的容灾机制;2)可以通过增加廉价的PC机,扩展系统存储容量,并通过HBase压缩算法,对数据进行压缩处理,性价比高;3)HBase表字段以列存储为特点,对于不同数据字段,通过增删列来上传数据,无需对历史表数据重写、迁移,方便快捷,不易丢失;4)可以通过HBase存储系统强大的查询机制,能够对所查询数据快速定位获取。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于HBase的金融数据存储方法,其特征在于,包括:
调取金融数据文件;
根据所述金融数据文件中包括的多个属性的参数值,生成行键,其中所述多个属性包括以下至少任意一项:股票代码、股票类型、交易日期以及交易时间;以及
根据所述行键,将所述金融数据文件中的金融数据导入HBase存储系统。
2.根据权利要求1所述的方法,其特征在于,根据所述金融数据文件中包括的多个属性的参数值,生成行键的操作,包括:
确定交易日序号,其中所述交易日序号用于指示所述金融数据文件中的金融数据交易日在全年交易日中所属的顺位;
遍历所述金融数据文件,确定所述金融数据文件中包括的多个属性的参数值;以及
根据所述多个属性的参数值,并通过数据加盐(Salting)的方式,生成所述行键,其中所述数据加盐(Salting)用于指示将所述交易日序号作为所述行键的前缀。
3.根据权利要求2所述的方法,其特征在于,所述多个属性包括股票代码、股票类型以及交易日期,并且
根据所述行键,将所述金融数据文件中的金融数据导入HBase存储系统的操作,包括:根据所述行键,将所述金融数据文件中包括的全部金融数据作为整体,导入所述HBase存储系统。
4.根据权利要求2所述的方法,其特征在于,所述多个属性包括股票代码、股票类型、交易日期以及交易时间,并且
根据所述行键,将所述金融数据文件中的金融数据导入HBase存储系统的操作,包括:
对所述金融数据文件中包括的每行金融数据进行解析;以及
根据所述行键,将所述金融数据文件中包括的每行金融数据逐条导入所述HBase存储系统。
5.根据权利要求1所述的方法,其特征在于,还包括:
根据全年交易日的数量,确定分区的数量,其中每一分区用于存储每一交易日产生的所有金融数据;以及
根据所确定的分区的数量,生成HBase表。
6.根据权利要求5所述的方法,其特征在于,还包括:
获取与所述金融数据文件相关的增量数据;
判断所述分区存储的金融数据是否超过预设的阈值;以及
在所述分区存储的金融数据超过预设的阈值的情况下,对所述分区进行拆分,并将所述增量数据存储至拆分后生成的分区。
7.根据权利要求1所述的方法,其特征在于,根据所述金融数据文件中包括的多个属性的参数值,生成行键的操作之前,包括:
对所述金融数据文件进行校验,判断所述金融数据文件中的金融数据是否异常;以及
在所述金融数据异常的情况下,对所述金融数据进行校正处理。
8.根据权利要求1所述的方法,其特征在于,还包括:设置合理的Hadoop、HBase集群参数。
9.根据权利要求1所述的方法,其特征在于,还包括:
接收用户发送的查询请求,其中所述查询请求用于指示请求查询与业务需求相关的业务数据;
生成与所述业务需求对应的行键;以及
根据与所述业务需求对应的行键,从所述HBase存储系统中获取所述业务数据。
10.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910041584.XA CN109829015A (zh) | 2019-01-16 | 2019-01-16 | 基于HBase的金融数据存储方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910041584.XA CN109829015A (zh) | 2019-01-16 | 2019-01-16 | 基于HBase的金融数据存储方法、装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109829015A true CN109829015A (zh) | 2019-05-31 |
Family
ID=66860356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910041584.XA Pending CN109829015A (zh) | 2019-01-16 | 2019-01-16 | 基于HBase的金融数据存储方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109829015A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287198A (zh) * | 2019-07-01 | 2019-09-27 | 四川新网银行股份有限公司 | 基于HBase数据库的金融数据索引方法 |
CN110674152A (zh) * | 2019-09-24 | 2020-01-10 | 京东数字科技控股有限公司 | 数据同步方法与装置、存储介质、电子设备 |
CN111460037A (zh) * | 2020-04-03 | 2020-07-28 | 中国建设银行股份有限公司 | 金融数据查询方法及装置 |
CN112256195A (zh) * | 2020-10-19 | 2021-01-22 | 安徽工业大学 | 一种基于gpu的金融数据存储方法和系统 |
CN113643129A (zh) * | 2021-09-01 | 2021-11-12 | 中国银行股份有限公司 | 一种金融数据的处理方法及装置 |
CN115033603A (zh) * | 2022-06-16 | 2022-09-09 | 支付宝(杭州)信息技术有限公司 | 一种数据存储、数据查询方法及装置 |
WO2023065134A1 (en) * | 2021-10-20 | 2023-04-27 | Paypal, Inc. | Database management using sort keys |
CN116610680A (zh) * | 2023-07-20 | 2023-08-18 | 上海富友支付服务股份有限公司 | 高频库和使用高频库的数据分级存储和查询方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917009A (zh) * | 2012-09-06 | 2013-02-06 | 中南民族大学 | 一种基于云计算技术的股票数据采集和存储方法和系统 |
US20140280457A1 (en) * | 2013-03-15 | 2014-09-18 | State Farm Mutual Automobile Insurance Company | Implementation of a web-scale data fabric |
CN107122437A (zh) * | 2017-04-19 | 2017-09-01 | 高新兴科技集团股份有限公司 | 一种支持多条件检索和实时分析的大数据处理方法 |
-
2019
- 2019-01-16 CN CN201910041584.XA patent/CN109829015A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102917009A (zh) * | 2012-09-06 | 2013-02-06 | 中南民族大学 | 一种基于云计算技术的股票数据采集和存储方法和系统 |
US20140280457A1 (en) * | 2013-03-15 | 2014-09-18 | State Farm Mutual Automobile Insurance Company | Implementation of a web-scale data fabric |
CN107122437A (zh) * | 2017-04-19 | 2017-09-01 | 高新兴科技集团股份有限公司 | 一种支持多条件检索和实时分析的大数据处理方法 |
Non-Patent Citations (3)
Title |
---|
1067048529的博客: "HBase数据加盐(Salting)存储", 《BLOG.SINA.COM.CN/S/BLOG_69BD1FD40102X9IC.HTML》 * |
刘博伟: "《基于HBase的金融时序数据存储系统》", 《中国科技论文》 * |
过往记忆: "《HBase Rowkey 设计指南》", 《HTTPS://WWW.ITEBLOG.COM/ARCHIVES/2486.HTML》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287198A (zh) * | 2019-07-01 | 2019-09-27 | 四川新网银行股份有限公司 | 基于HBase数据库的金融数据索引方法 |
CN110674152A (zh) * | 2019-09-24 | 2020-01-10 | 京东数字科技控股有限公司 | 数据同步方法与装置、存储介质、电子设备 |
CN111460037A (zh) * | 2020-04-03 | 2020-07-28 | 中国建设银行股份有限公司 | 金融数据查询方法及装置 |
CN112256195A (zh) * | 2020-10-19 | 2021-01-22 | 安徽工业大学 | 一种基于gpu的金融数据存储方法和系统 |
CN113643129A (zh) * | 2021-09-01 | 2021-11-12 | 中国银行股份有限公司 | 一种金融数据的处理方法及装置 |
WO2023065134A1 (en) * | 2021-10-20 | 2023-04-27 | Paypal, Inc. | Database management using sort keys |
CN115033603A (zh) * | 2022-06-16 | 2022-09-09 | 支付宝(杭州)信息技术有限公司 | 一种数据存储、数据查询方法及装置 |
CN116610680A (zh) * | 2023-07-20 | 2023-08-18 | 上海富友支付服务股份有限公司 | 高频库和使用高频库的数据分级存储和查询方法和系统 |
CN116610680B (zh) * | 2023-07-20 | 2023-10-13 | 上海富友支付服务股份有限公司 | 高频库和使用高频库的数据分级存储和查询方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109829015A (zh) | 基于HBase的金融数据存储方法、装置以及存储介质 | |
CN106874361B (zh) | 应用于海关申报的数据处理方法和装置 | |
CN104573832A (zh) | 一种基于多医院号源共享池的分时段预约挂号系统 | |
CN104243598B (zh) | 一种信息推荐方法及装置 | |
CN108062367A (zh) | 一种数据列表的上传方法及其终端 | |
He et al. | Managing supply disruption through procurement strategy and price competition | |
CN104580349A (zh) | 安全云管理代理 | |
CN104011701A (zh) | 内容传送网络 | |
CN111125518B (zh) | 家电信息推荐的系统及方法 | |
CN109408696A (zh) | 一种用于搜索寄宿程序的方法与设备 | |
CN107194810B (zh) | 资产配置系统和操作方法 | |
CN105474250A (zh) | 特制的消息传送 | |
CN107944677A (zh) | 业绩追踪方法、应用服务器及计算机可读存储介质 | |
CN107247775A (zh) | 一种数据更新方法、装置及电子设备 | |
CN110889608A (zh) | 工程变更流程的管控方法、装置、电子设备及存储介质 | |
CN111145029A (zh) | 基于大数据的期货与股票的交易方法、系统及设备 | |
CN109636262A (zh) | 一种订单处理方法、装置、系统、计算机设备和存储介质 | |
CN113177772B (zh) | 一种业务数据处理方法、装置和系统 | |
CN109697249A (zh) | 搜索目标对象以及发布对象的方法、系统以及存储介质 | |
CN109146128A (zh) | 业务数据处理方法、装置及服务器 | |
KR102345949B1 (ko) | It 인프라 시스템 추천 장치 | |
CN113139748A (zh) | 一种业务信息推荐方法、装置、电子设备和存储介质 | |
WO2008123885A1 (en) | Live profile | |
CN109040296A (zh) | 一种基于长连接的数据推送方法及系统 | |
JP2019153022A (ja) | 電力取引支援システム |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190531 |
|
RJ01 | Rejection of invention patent application after publication |