一种基于云计算技术的股票数据采集和存储方法和系统的制作方法

文档序号:6376459阅读:159来源:国知局
专利名称:一种基于云计算技术的股票数据采集和存储方法和系统的制作方法
技术领域
本发明属于网络应用技术领域,更具体地,涉及一种基于云计算技术的股票数据采集和存储方法和系统。
背景技术
证券交易日产生的股票数据的特征主要表现为实时性和大规模。目前,沪深两市在交易日每支股票每5秒会产生一条更新数据,每天数据增长容量在I. 5-2GB之间。据2011年相关统计数据,在国内沪深交易所上市交易股票数1800支左右,香港交易所6700左右,国外仅以美国纳斯达克证券市场为例上市交易股票数5800支左右。若把基金和债券考虑在内则某时刻同时产生的数据量更多。随着时间的积累,股票数据规模非常可观,且与一般 日志数据不同的是,这些数据在金融工程领域有较高的分析价值,金融投资研究机构需要经常对历史和实时数据进行挖掘创新。处理高频且大规模的股票数据是一个大型的工程问题,包括数据如何去存储,到这些数据如何建模、计算,到最后形成高效的数据组织之后如何应用这些数据。一般的数据库系统无法满足如此大规模和实时性,灵活性的要求。单独使用关系型数据库实现方法存在开发复杂、实时性差、管理困难、数据结构灵活性差等问题。若采用OracIe Timesten解决方案,存在软硬件成本昂贵、横向扩展难度较大以及需要有使用经验的技术员工等问题。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于云计算技术的股票数据采集和存储方法,其开发简单、实现大规模股票数据的快速采集、股票数据高效组织、数据结构扩展性好。为实现上述目的,本发明提供了一种基于云计算技术的股票数据采集和存储方法,包括以下步骤(I)获取多个股票代码,并为该股票代码生成对应的URL列表文件,(2)设置云计算平台的Hadoop分布式文件系统的分片大小,(3)将URL列表文件存储在Hadoop分布式文件系统上,(4)接收用户提交的股票数据采集请求,根据文件分片的个数将股票数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指派给相应分片所在的从服务器执行,(5)根据分解后的Map任务从服务器向远程股票数据服务器发出Http数据请求,并且远程股票数据服务器返回股票数据,从而实现股票数据的并行采集,(6)根据分解后的Map任务对股票数据进行解析,解析功能函数程序的编制遵循远程股票服务器对股票数据的结构描述,(7)根据分解后的Map任务将解析后的股票数据存储在从服务器上的分布式数据库HBase中。步骤(I)中URL列表文件是按行组织的文本形式的文件,每一行为一个URL链接,且每个URL链接含有190支股票代码。步骤(4)具体为,采集工作是遵循Hadoop分布式并行编程MapReduce模型开发出来的应用程序,其中包含一个Map任务功能函数,所述函数中实现了股票数据采集、解析和存储功能。步骤(6)具体为,首先以回车符作为特征将含有股票数据的StockData值分割成190个数据对象,保存在TempResult数组中,然后依次取出TempResult数组中的每一个元素,使用String对象的Split方法,利用双引号符号特征将信息内容分割成二个部分,其中 第一部分包含了股票代码ID,第二部分中包含了有用的股票数据信息,先取出第二部分内容,再按逗号分割成32份,保存在数组Result中。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果I、开发简单因为步骤(4)中采用了开源云计算Hadoop系统提供的提供的MapReduce分布式计算编程模型,开发人员只需写较少的代码就可以完成复杂的分布式应用程序的开发。2、实时性强因为在步骤(4)、步骤(5)和步骤(6)中编写了 MapReduce模型的计算任务,将股票数据的采集、解析和存储等较重的计算任务分解成若干小计算任务分配到多台服务器上并行执行完成,所以,本方法具有较高计算效率,能实现股票数据的快速采集和存储。3、股票数据的高效组织因为在步骤(7)中结合股票数据处理应用的需求特征设计了基于分布式数据库HBase技术的股票数据存储结构,便于各种应用服务的开发,如查询服务、统计应用或者如进行股票变化规律聚类等数据挖掘高级应用,实现结构良好的股票历史数据存储中心。4、数据结构易于扩展由于采用了基于分布式数据库HBase技术,描述股票数据属性结构是灵活的,可根据存储需求随时通过增加列族的列标签的方式增加新的属性描述,这相比传统关系型数据库固定的关系模式结构要灵活得多。本发明的另一目的在于提供一种基于云计算技术的股票数据采集和存储系统,其能满足大规模股票数据采集和存储对系统的需求,软硬件成本低廉,服务资源具有良好的可扩展性。为实现上述目的,本发明提供了一种基于云计算技术的股票数据采集和存储系统,包括URL列表文件生成模块、文件分片大小设置模块、URL列表文件存储模块、股票数据采集请求提交模块、数据采集模块、数据解析模块、数据存储模块、以及云计算软件系统支撑模块。URL列表文件生成模块用于获取多个股票代码,并为股票代码生成对应的URL列表文件,文件分片大小设置模块用于设置云计算平台的Hadoop分布式文件系统的分片大小,URL列表文件存储模块用于将URL列表文件存储在Hadoop分布式文件系统上,股票数据采集请求提交模块用于向云计算平台提交股票数据采集请求,数据采集模块用于从远程股票数据服务器获取股票数据,数据解析模块用于对获取到的股票数据进行格式解析,数据存储模块用于将解析后股票数据存储到分布式数据库系统中,云计算软件系统支撑模块用于提供URL列表文件生成模块、文件分片大小设置模块、URL列表文件存储模块、股票数据采集请求提交模块、数据采集模块和数据解析模块运行的软件支撑环境。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果I、软硬件成本低廉因为股票数据采集和存储云服务的构建系统采用了 Hadoop云计算技术,Hadoop可以部署在由普通计算机构成集群上的,而不需要传统方法所需要的高性能服务器,且Hadoop是开源的云计算技术项目,所以,本发明系统的软硬件成本比较低。2、资源利用率高因为采用了云计算服务架构,能实现多台普通计算机协同工作,提高了硬件资源的利用率。
3、可扩展性好由于采用Hadoop云计算技术,所以,可在不停止当前服务的情况下动态增加服务器的个数,从而增加整个云平台的计算能力和存储能力。


图I是本发明的硬件应用环境图。图2是本发明基于云计算技术的股票数据采集和存储方法的流程图。图3是本发明基于云计算技术的股票数据采集和存储系统的示意框图。图4是URL列表文件实例图。图5是基于分布式计算技术的采集过程图。图6是股票数据中间结果数据实例图。图7是股票数据解析示意图。图8是基于分布式存储技术的存储组织模型设计图。图9是基于分布式存储技术的数据存储实例示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图I所示,本发明的硬件应用环境如下由客户端、一个主服务器和多个从服务器组成的云计算平台、以及远程股票数据服务器组成。采集股票数据工作请求由用户通过客户端提交到主服务器;主服务器先将采集工作分解为多个采集Map任务并分配到不同的从服务器执行,主服务器还负责与数据存储管理相关的元数据管理;从服务器向远程股票数据服务器发起Http数据请求,远程股票数据服务器返回股票数据给从服务器;从服务器解析获得的股票数据,并将股票数据存储在从服务器上。如图2所示,本发明基于云计算技术的股票数据采集和存储方法包括以下步骤(I)获取多个股票代码,并为该股票代码生成对应的URL列表文件,该URL列表文件是按行组织的文本形式的文件,每一行为一个URL链接,且每个URL链接含有190支股票代码。具体而言,股票代码可以从诸如香港交易所、美国纽交所网站下载获取,取190支股票代码以逗号隔开,再股票代码前加上“http://hq. sinajs. cn/list=”字符串,从而一个构成股票数据采集URL,以行的形式存储在URL列表文件中;每190支股票代码都按上述方法构成URL列表的一行,如图4所示,给出一个URL列表文件内容组成实例。URL列表文件的行数越多,URL列表文件越大,越能体现出云计算服务方法比传统方法在抓取性能上的优势;(2)设置云计算平台的Hadoop分布式文件系统(Hadoop Distributed FileSystem,简称HDFS)的分片大小,具体而言,是通过修改主服务器Hadoop目录下的conf子目录中的hdfs. xml配置文件的dfs. block, size属性值来实现,分片的大小决定了步骤(3)中数据文件存储时的分片个数,也决定了步骤(4)中的Map任务数目;(3)将URL列表文件存储在HDFS上,具体而言,根据步骤(2)中设置的文件分片大小将URL列表文件进行分割成若干个分片,在主服务器控制下将文件分片存储到不同的从服务器中;(4)接收用户提交的股票数据采集请求,根据文件分片的个数将股票数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指派给相应分片所在的从服务器执行;具体而言,米集工作是遵循Hadoop分布式并行编程MapReduce模型开发出来的应用程序,其中包含一个Map任务功能函数,该函数中实现了股票数据采集、解析和存储等功能。(5)根据分解后的Map任务从服务器向远程股票数据服务器发出Http数据请求,并且远程股票数据服务器返回股票数据,实现股票数据的并行采集;对于远程股票数据服务器而言,国内的服务器是例如新浪金融数据服务器,国外服务器是例如雅虎金融数据服务器。具体而言,每个Map任务从相应文件分片按行读取文件内容,并将其装配成键值对格式(Key Value Pair)作为Map任务的输入值,Key的值为每行URL在URL列表文件中的行号,Value的值为URL内容本身,如图5所示,执行Map任务功能函数将从输入Value值中获得股票数据采集URL,并向远程股票数据发起Http数据报文请求,远程股票数据服务器返回股票数据,得到Map任务的中间输出结果键值对,Key的值为URL内容,Value的值为URL中所有190支股票代码在Http数据请求时的股票数据StockData,如图6所示,给出了一个返回中间结果Value值的数据实例;(6)根据分解后的Map任务对股票数据进行解析,解析功能函数程序的编制遵循远程股票服务器对股票数据的结构描述;具体而言,首先以回车符作为特征将含有股票数据的StockData值分割成190个数据对象,保存在TempResult数组中,然后依次取出TempResult数组中的每一个元素,使用String对象的Split方法,利用双引号符号特征将信息内容分割成二个部分,其中第一部分包含了股票代码ID,第二部分中包含了有用的股票数据信息,先取出第二部分内容,再按逗号分割成32份,保存在数组Result中,此时,Result中的数据对应当前抓取股票的32个实时数据项,如图7所示。(7)根据分解后的Map任务将解析后的股票数据存储在从服务器上的分布式数据库HBase中,HBase是一种以列为存储结构的分布式数据库,在存储数据前必须先设计好存储结构,存储结构好坏将直接影响到股票数据处理的上层应用的执行效率,如图8所示,是本发明的股票数据存储组织模型设计图;具体而言,以股票代码ID作为HBase数据表的“行键”(Row Key);设立一个基本信息“列族”(Column Family),用以描述发行该股票的公司相关信息;设立“实时数据”列族,用以存储每次抓取解析后的股票数据;将获得股票数据的日期时间信息作为存储该行数据的“时间戳”(Time Stamp)。
在上述步骤(7)中,HBase数据库技术中数据存储结构的设计具有较大的自由度,本发明以股票代码ID作为HBase数据表行键的设计理由如下考虑到上层应用需求存在以下特征,大多数的查询和展示操作都是针对指定股票代码在一小段时间内的某种业务数据,对股票数据统计和数据挖掘应用也针对某支股票进行的;以股票代码ID作为行键,分布式HBase数据库系统在数据存储时会自动按股票代码ID建立索引;由于HBase数据库在物理存储上按行健自动划分Region,使得按行健分割的同一列族的数据保存在临近位置的物理存储区中,这样的设计会在最大程度上保证单次数据操作的独立性(即仅需扫描一个Region),能提高数据操作的效率。在上述步骤(7)中,“时间戳”中的股票日期时间信息可以由步骤(6)中解析股票数据的第30和31项信息内容(如图7所示)联合起来得到。在上述步骤(7)中,“基本信息列族”中可以通过添加“列标签”(Family Lab)的方式来对发行该股票的公司各方面的信息进行描述,图8仅给出了 4个“列标签”的设计, 用户可根据需求动态增加新的列标签以存储描述该公司其他诸如财务信息的数据。在上述步骤(7)中,“实时数据列族”由32个列标签,分别对应于股票数据解析后的32个数据项内容,以存储相应的股票数据内容。如图9所示,给出了存储组织模型下存储数据的一个实例。在上述步骤(5)至(7)中,采集、解析和存储是设计在一个工作里的Map任务功能函数中进行的,如果采用多个工作的话,就会因需要额外消耗一定系统资源进行工作的初始化和分配等计算,而增加数据采集的延时。如图3所示,本发明基于云计算技术的股票数据采集和存储系统包括URL列表文件生成模块I、文件分片大小设置模块2、URL列表文件存储模块3、股票数据采集请求提交模块4、数据采集模块5、数据解析模块6、数据存储模块7、以及云计算软件系统支撑模块8。URL列表文件生成模块I用于获取多个股票代码,并为股票代码生成对应的URL列表文件。文件分片大小设置模块2用于设置云计算平台HDFS存储文件时文件分片的大小。URL列表文件存储模块3用于将URL列表文件存储在云计算平台的HDFS上。股票数据采集请求提交模块4用于向云计算平台提交股票数据采集请求。数据采集模块5用于从远程股票数据服务器获取股票数据。数据解析模块6用于对获取到的股票数据进行格式解析。数据存储模块7用于将解析后股票数据存储到分布式数据库系统中。云计算软件系统支撑模块8用于提供URL列表文件生成模块I、文件分片大小设置模块2、URL列表文件存储模块3、股票数据采集请求提交模块4、数据采集模块5和数据解析模块6运行的软件支撑环境,主要包括开源Hadoop软件和HBase开源分布式数据库系统。具体而言,在主、从服务器上安装Linux操作系统;然后在每台机器上部署Hadoop软件,将主服务器配置为分布式文件系统HDFS的Namenode节点,并它配置成Hadoop分布式计算模型MapReduce的JobTracker节点,同时还将其配置成分布式Hbase数据库的HMaster节点;将从服务器配置为分布式文件系统HDFS的Datanode节点,并它配置成Hadoop分布式计算模型MapReduce的TaskTracker节点,同时还将其配置成分布式数据库Hbase的HRegionServer节点。在此基础上,部署本发明的URL列表文件生成模块I、文件分片大小设置模块2、URL列表文件存储模块3、股票数据采集请求提交模块4、数据采集模块5、数据解析模块6、数据存储模块7,以实现本发明所提出的方法。本领 域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于云计算技术的股票数据采集和存储方法,其特征在于,包括以下步骤 (O获取多个股票代码,并为该股票代码生成对应的URL列表文件; (2)设置云计算平台的Hadoop分布式文件系统的分片大小; (3)将所述URL列表文件存储在所述Hadoop分布式文件系统上; (4)接收用户提交的股票数据采集请求,根据文件分片的个数将所述股票数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指派给相应分片所在的从服务器执行; (5)根据所述分解后的Map任务从服务器向远程股票数据服务器发出Http数据请求,并且所述远程股票数据服务器返回股票数据,从而实现股票数据的并行采集; (6)根据所述分解后的Map任务对所述股票数据进行解析,解析功能函数程序的编制遵循远程股票服务器对股票数据的结构描述; (7)根据所述分解后的Map任务将解析后的股票数据存储在从服务器上的分布式数据库HBase中。
2.根据权利要求I所述的股票数据采集和存储方法,其特征在于,所述URL列表文件是按行组织的文本形式的文件,每一行为一个URL链接,且每个URL链接含有190支股票代码。
3.根据权利要求I所述的股票数据采集和存储方法,其特征在于,步骤(4)具体为,采集工作是遵循Hadoop分布式并行编程MapReduce模型开发出来的应用程序,其中包含一个Map任务功能函数,所述函数中实现了股票数据采集、解析和存储功能。
4.根据权利要求I所述的股票数据采集和存储方法,其特征在于,步骤(6)具体为,首先以回车符作为特征将含有股票数据的StockData值分割成190个数据对象,保存在TempResult数组中,然后依次取出TempResult数组中的每一个元素,使用String对象的Split方法,利用双引号符号特征将信息内容分割成二个部分,其中第一部分包含了股票代码ID,第二部分中包含了有用的股票数据信息,先取出第二部分内容,再按逗号分割成32份,保存在数组Result中。
5.一种基于云计算技术的股票数据采集和存储系统,其特征在于, 包括URL列表文件生成模块、文件分片大小设置模块、URL列表文件存储模块、股票数据采集请求提交模块、数据采集模块、数据解析模块、数据存储模块、以及云计算软件系统支撑1吴块; 所述URL列表文件生成模块用于获取多个股票代码,并为股票代码生成对应的URL列表文件; 所述文件分片大小设置模块用于设置云计算平台的Hadoop分布式文件系统的分片大小; 所述URL列表文件存储模块用于将所述URL列表文件存储在所述Hadoop分布式文件系统上; 所述股票数据采集请求提交模块用于向云计算平台提交股票数据采集请求; 所述数据采集模块用于从远程股票数据服务器获取股票数据; 所述数据解析模块用于对获取到的股票数据进行格式解析; 所述数据存储模块用于将解析后股票数据存储到分布式数据库系统中;所 述云计算软件系统支撑模块用于提供所述URL列表文件生成模块、所述文件分片大小设置模块、所述URL列表文件存储模块、所述股票数据采集请求提交模块、所述数据采集模块和所述数据解析模块运行的软件支撑环境。
全文摘要
本发明公开了一种基于云计算技术的股票数据采集和存储方法,包括获取多个股票代码,并为该股票代码生成对应的URL列表文件,设置云计算平台的Hadoop分布式文件系统的分片大小,将URL列表文件存储在Hadoop分布式文件系统上,接收用户提交的股票数据采集请求,根据文件分片的个数将股票数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指派给相应分片所在的从服务器执行,根据分解后的Map任务从服务器向远程股票数据服务器发出Http数据请求,并且远程股票数据服务器返回股票数据,根据分解后的Map任务对股票数据进行解析,解析功能函数程序的编制遵循远程股票服务器对股票数据的结构描述。本发明开发简单,可实现股票数据的快速采集,数据结构扩展性好。
文档编号G06F17/30GK102917009SQ20121032744
公开日2013年2月6日 申请日期2012年9月6日 优先权日2012年9月6日
发明者李成华, 江小平, 张华 , 余良, 李凡 申请人:中南民族大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1