2024年4月28日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.2

(22)申请日 2012.09.06

(71)申请人 中南民族大学

地址 430074 湖北省武汉市洪山区民族大道708

(72)发明人 李成华 江小平 张华 余良 李凡

(74)专利代理机构 华中科技大学专利中心

代理人 朱仁玲

(51)

H04L29/08

G06F17/30

(10)申请公布号 CN 102917009 A

(43)申请公布日 2013.02.06

权利要求说明书 说明书 幅图

(54)发明名称

一种基于云计算技术的股票数据采

集和存储方法和系统

(57)摘要

本发明公开了一种基于云计算技术

的股票数据采集和存储方法,包括:获取

多个股票代码,并为该股票代码生成对应

的URL列表文件,设置云计算平台的

Hadoop分布式文件系统的分片大小,将

URL列表文件存储在Hadoop分布式文件

系统上,接收用户提交的股票数据采集请

求,根据文件分片的个数将股票数据采集

请求分解为相应个数的Map任务,并将分

解后的Map任务指派给相应分片所在的从

服务器执行,根据分解后的Map任务从服

务器向远程股票数据服务器发出Http数据

请求,并且远程股票数据服务器返回股票

数据,根据分解后的Map任务对股票数据

进行解析,解析功能函数程序的编制遵循

远程股票服务器对股票数据的结构描述。

本发明开发简单,可实现股票数据的快速

采集,数据结构扩展性好。

法律状态

法律状态公告日

法律状态信息

未缴年费专利权终止IPC(主分

类):H04L29/08专利

2023-09-15

号:ZL2申请

日:20120906授权公告

日:20150819

法律状态

专利权的终止

权 利 要 求 说 明 书

1.一种基于云计算技术的股票数据采集和存储方法,其特征在于,包

(1)获取多个股票代码,并为该股票代码生成对应的URL列表文件;

(2)设置云计算平台的Hadoop分布式文件系统的分片大小;

(3)将所述URL列表文件存储在所述Hadoop分布式文件系统上;

(4)接收用户提交的股票数据采集请求,根据文件分片的个数将所述

(5)根据所述分解后的Map任务从服务器向远程股票数据服务器发出

(6)根据所述分解后的Map任务对所述股票数据进行解析,解析功能

(7)根据所述分解后的Map任务将解析后的股票数据存储在从服务器

2.根据权利要求1所述的股票数据采集和存储方法,其特征在于,所

上的分布式数据库HBase中。

函数程序的编制遵循远程股票服务器对股票数据的结构描述;

括以下步骤:

股票数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指

派给相应分片所在的从服务器执行;

Http数据请求,并且所述远程股票数据服务器返回股票数据,从而实现股

票数据的并行采集;

述URL列表文件是按行组织的文本形式的文件,每一行为一个URL链接,

且每个URL链接含有190支股票代码。

3.根据权利要求1所述的股票数据采集和存储方法,其特征在于,步

骤(4)具体为,采集工作是遵循Hadoop分布式并行编程MapReduce模型

开发出来的应用程序,其中包含一个Map任务功能函数,所述函数

了股票数据采集、解析和存储功能。 中实现

4.根据权利要求1所述的股票数据采集和存储方法,其特征在于,步

骤(6)具体为,首先以回车符作为特征将含有股票数据的StockData值分

割成190个数据对象,保存在

数组中的每一个元素,

将信息内容分

中包含

TempResult数组中,然后依次取出TempResult

使用String对象的Split方法,利用双引号符号特征

割成二个部分,其中第一部分包含了股票代码ID,第二部分

了有用的股票数据信息,先取出第二部分内容,再按逗号分割成32

5.一种基于云计算技术的股票数据采集和存储系统,其特征在于,

包括URL列表文件生成模块、文件分片大小设置模块、URL列表文件

份,保存在数组Result中。

存储模块、股票数据采集请求提交模块、数据采集模块、数据解析模块、

数据存储模块、以及云计算软件系统支撑模块;

所述URL列表文件生成模块用于获取多个股票代码,并为股票代码生

所述文件分片大小设置模块用于设置云计算平台的Hadoop分布式文

所述URL列表文件存储模块用于将所述URL列表文件存储在所述

所述股票数据采集请求提交模块用于向云计算平台提交股票数据采集

所述数据采集模块用于从远程股票数据服务器获取股票数据;

所述数据解析模块用于对获取到的股票数据进行格式解析;

所述数据存储模块用于将解析后股票数据存储到分布式数据库系统

所述云计算软件系统支撑模块用于提供所述URL列表文件生成模块、

中;

请求;

Hadoop分布式文件系统上;

件系统的分片大小;

成对应的URL列表文件;

所述文件分片大小设置模块、所述URL列表文件存储模块、所述股票数据

采集请求提交模块、所述数据采集模块和所述数据解析模块运行的软

撑环境。 件支

说 明 书

技术领域

本发明属于网络应用技术领域,更具体地,涉及一种基于云计算技术

背景技术

证劵交易日产生的股票数据的特征主要表现为实时性和大规模。目前,

一般的数据库系统无法满足如此大规模和实时性,灵活性的要求。单

发明内容

针对现有技术的缺陷,本发明的目的在于提供一种基于云计算技术的

独使用关系型数据库实现方法存在开发复杂、实时性差、管理困难、数据

结构灵活性差等问题。若采用Oracle Timesten解决方案,存在软硬件成本

昂贵、横向扩展难度较大以及需要有使用经验的技术员工等问题。

沪深两市在交易日每支股票每5秒会产生一条更新数据,每天数据增长容

量在1.5-2GB之间。据2011年相关统计数据,在国内沪深交易所上市交易

股票数1800支左右,香港交易所6700左右,国外仅以美国纳斯达克证券

市场为例上市交易股票数5800支左右。若把基金和债劵考虑在内则某时刻

同时产生的数据量更多。随着时间的积累,股票数据规模非常可观,且与

一般日志数据不同的是,这些数据在金融工程领域有较高的分析价值,金

融投资研究机构需要经常对历史和实时数据进行挖掘创新。处理高频且大

规模的股票数据是一个大型的工程问题,包括数据如何去存储,到这些数

据如何建模、计算,到最后形成高效的数据组织之后如何应用这些数据。

的股票数据采集和存储方法和系统。

股票数据采集和存储方法,其开发简单、实现大规模股票数据的快速采集、

股票数据高效组织、数据结构扩展性好。

为实现上述目的,本发明提供了一种基于云计算技术的股票数据采集

(1)获取多个股票代码,并为该股票代码生成对应的URL列表文件,

(2)设置云计算平台的Hadoop分布式文件系统的分片大小,

(3)将URL列表文件存储在Hadoop分布式文件系统上,

(4)接收用户提交的股票数据采集请求,根据文件分片的个数将股票

(5)根据分解后的Map任务从服务器向远程股票数据服务器发出Http

(6)根据分解后的Map任务对股票数据进行解析,解析功能函数程序

(7)根据分解后的Map任务将解析后的股票数据存储在从服务器上的

步骤(1)中URL列表文件是按行组织的文本形式的文件,每一行为

URL链接,且每个URL链接含有190支股票代码。

一个

分布式数据库HBase中。

的编制遵循远程股票服务器对股票数据的结构描述,

数据请求,并且远程股票数据服务器返回股票数据,从而实现股票数据的

并行采集,

数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指派给

相应分片所在的从服务器执行,

和存储方法,包括以下步骤:

步骤(4)具体为,采集工作是遵循Hadoop分布式并行编程MapReduce

步骤(6)具体为,首先以回车符作为特征将含有股票数据的StockData

值分割成190个数据对象,保存在TempResult数组中,然后依次取出

TempResult数组中的每一个元素,使用String对象的Split方法,利用双引

号符号特征将信息内容分割成二个部分,其中第一部分包含了股票代码ID,

第二部分中包含了有用的股票数据信息,先取出第二部分内容,再按

分割成32份,保存在数组Result中。

模型开发出来的应用程序,其中包含一个Map任务功能函数,所述函数中

实现了股票数据采集、解析和存储功能。

逗号

通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以

1、开发简单:因为步骤(4)中采用了开源云计算Hadoop系统提供的

2、实时性强:因为在步骤(4)、步骤(5)和步骤(6)中编写了MapReduce

3、股票数据的高效组织:因为在步骤(7)中结合股票数据处理应用

的需求特征设计了基于分布式数据库HBase技术的股票数据存储结构,便

于各种应用服务的开发,如查询服务、统计应用或者如进行股票变化规律

聚类等数据挖掘高级应用,实现结构良好的股票历史数据存储中心。

模型的计算任务,将股票数据的采集、解析和存储等较重的计算任务分解

成若干小计算任务分配到多台服务器上并行执行完成,所以,本方法具有

较高计算效率,能实现股票数据的快速采集和存储。

提供的MapReduce分布式计算编程模型,开发人员只需写较少的代码就可

以完成复杂的分布式应用程序的开发。

下的有益效果:

4、数据结构易于扩展:由于采用了基于分布式数据库HBase技术,描

本发明的另一目的在于提供一种基于云计算技术的股票数据采集和存

为实现上述目的,本发明提供了一种基于云计算技术的股票数据采集

和存储系统,包括URL列表文件生成模块、文件分片大小设置模块、URL

列表文件存储模块、股票数据采集请求提交模块、数据采集模块、数据解

析模块、数据存储模块、以及云计算软件系统支撑模块。URL列表文件生

成模块用于获取多个股票代码,并为股票代码生成对应的URL列表文件,

文件分片大小设置模块用于设置云计算平台的Hadoop分布式文件系统的

分片大小,URL列表文件存储模块用于将URL

布式文件系统上,股票数据采集请求提交模块用

数据采集请求,数据采集模块用于从远程股票数

数据解析模块用于对获取到的股票数据进行格式

将解析后股票数据存储到分布式数据库系统中,

用于提供URL列表文件生成模块、文件分片大

存储模块、股票数据采集请求提交模块、

行的软件支撑环境。

储系统,其能满足大规模股票数据采集和存储对系统的需求,软硬件成本

低廉,服务资源具有良好的可扩展性。

述股票数据属性结构是灵活的,可根据存储需求随时通过增加列族的列标

签的方式增加新的属性描述,这相比传统关系型数据库固定的关系模式结

构要灵活得多。

列表文件存储在Hadoop分

于向云计算平台提交股票

据服务器获取股票数据,

解析,数据存储模块用于

云计算软件系统支撑模块

小设置模块、URL列表文件

数据采集模块和数据解析模块运

通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以

下的有益效果:

1、软硬件成本低廉:因为股票数据采集和存储云服务的构建系统采用

2、资源利用率高:因为采用了云计算服务架构,能实现多台普通计算

3、可扩展性好:由于采用Hadoop云计算技术,所以,可在不停止当

附图说明

图1是本发明的硬件应用环境图。

图2是本发明基于云计算技术的股票数据采集和存储方法的流程图。

图3是本发明基于云计算技术的股票数据采集和存储系统的示意框图。

图4是URL列表文件实例图。

图5是基于分布式计算技术的采集过程图。

图6是股票数据中间结果数据实例图。

图7是股票数据解析示意图。

图8是基于分布式存储技术的存储组织模型设计图。

前服务的情况下动态增加服务器的个数,从而增加整个云平台的计算能力

和存储能力。

机协同工作,提高了硬件资源的利用率。

了Hadoop云计算技术,Hadoop可以部署在由普通计算机构成集群上的,

而不需要传统方法所需要的高性能服务器,且Hadoop是开源的云计算技术

项目,所以,本发明系统的软硬件成本比较低。

图9是基于分布式存储技术的数据存储实例示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图

如图1所示,本发明的硬件应用环境如下:由客户端、一个主服务器

从服务器组成的云计算平台、以及远程股票数据服务器组成。采集

据工作请求由用户通过客户端提交到主服务器;主服务器先将采集

解为多个采集Map任务并分配到不同的从服务器执行,主服务器还

数据存储管理相关的元数据管理;从服务器向远程股票数据服务器

Http数据请求,远程股票数据服务器返回股票数据给从服务器;从服

析获得的股票数据,并将股票数据存储在从服务器上。

如图2所示,本发明基于云计算技术的股票数据采集和存储方法包括

骤:

(1)获取多个股票代码,并为该股票代码生成对应的URL列表文件,

该URL列表文件是按行组织的文本形式的文件,每一行为一个URL链接,

且每个URL链接含有190支股票代码。具体而言,股票代码可以从诸如香

港交易所、美国纽交所网站下载获取,取190支股票代码以逗号隔开,再

股票代码前加上“/list=”字符串,从而一个构成股票数据

采集URL,以行的形式存储在URL列表文件中;每190支股票代码都按上

述方法构成URL列表的一行,如图4所示,给出一个URL列表文件内容

组成实例。URL列表文件的行数越多,URL列表文件越大,越能体现出云

以下步

和多个

股票数

工作分

负责与

发起

务器解

及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体

实施例仅仅用以解释本发明,并不用于限定本发明。

计算服务方法比传统方法在抓取性能上的优势;

(2)设置云计算平台的Hadoop分布式文件系统(Hadoop Distributed

File System,简称HDFS)的分片大小,具体而言,是

Hadoop目录下的conf子目录中的配置文件的

来实现,分片的大小决定了步骤(3)中数据文件存储

定了步骤(4)中的Map任务数目;

通过修改主服务器

属性值

时的分片个数,也决

(3)将URL列表文件存储在HDFS上,具体而言,根据步骤(2)中

(4)接收用户提交的股票数据采集请求,根据文件分片的个数将股票

(5)根据分解后的Map任务从服务器向远程股票数据服务器发出Http

数据请求,并且远程股票数据服务器返回股票数据,实现股票数据的并行

采集;对于远程股票数据服务器而言,国内的服务器是例如新浪金融数据

服务器,国外服务器是例如雅虎金融数据服务器。具体而言,每个Map任

务从相应文件分片按行读取文件内容,并将其装配成键值对格式

Pair)作为Map任务的输入值,Key的值为每行URL在URL

行号,Value的值为URL内容本身,如图5所示,执行

将从输入Value值中获得股票数据采集URL,并向远

数据报文请求,远程股票数据服务器返回股票数

输出结果键值对,Key的值为URL内容,Value

数据采集请求分解为相应个数的Map任务,并将分解后的Map任务指派给

相应分片所在的从服务器执行;具体而言,采集工作是遵循Hadoop分布式

并行编程MapReduce模型开发出来的应用程序,其中包含一个Map任务功

能函数,该函数中实现了股票数据采集、解析和存储等功能。

设置的文件分片大小将URL列表文件进行分割成若干个分片,在主服务器

控制下将文件分片存储到不同的从服务器中;

(Key Value

列表文件中的

Map任务功能函数

程股票数据发起Http

据,得到Map任务的中间

的值为URL中所有190支 股票代码在Http数据请求时的股票数据

个返回中间结果Value值的数据实StockData,如图6所示,给出了一

例;

(6)根据分解后的Map任务对股票数据进行解析,解析功能函数程序

的编制遵循远程股票服务器对股票数据的结构描述;具体而言,首先以回

车符作为特征将含有股票数据的StockData值分

在TempResult数组中,然后依次取出

用String对象的Split方法,利用

分,其中第一部分包含了股

信息,先取出第二部分内容,

此时,Result中的数据对应

割成190个数据对象,保存

TempResult数组中的每一个元素,使

双引号符号特征将信息内容分割成二个部

票代码ID,第二部分中包含了有用的股票数据

再按逗号分割成32份,保存在数组Result中,

当前抓取股票的32个实时数据项,如图7所示。

(7)根据分解后的Map任务将解析后的股票数据存储在从服务器上的

分布式数据库HBase中,HBase是一种以列为存储结构的分布式数据库,

在存储数据前必须先设计好存储结构,存储结构好坏将直接影响到股票数

据处理的上层应用的执行效率,如图8所示,是本发明的股票数据存储组

织模型设计图;具体而言,以股票代码ID作为HBase数据表的“行键”

Key);设立一个基本信息“列族”(Column Family),用以描

的公司相关信息;设立“实时数据”列族,用以存储每次

票数据;将获得股票数据的日期时间信息作为存储该行

(Time Stamp)。

(Row

述发行该股票

抓取解析后的股

数据的“时间戳”

在上述步骤(7)中,HBase数据库技术中数据存储结构的设计具有较

大的自由度,本发明以股票代码ID作为HBase数据表行键的设计理由如

下:考虑到上层应用需求存在以下特征,大多数的查询和展示操作都是针

对指定股票代码在一小段时间内的某种业务数据,对股票数据统计和数据

挖掘应用也针对某支股票进行的;以股票代码ID作为行键,分布式HBase

数据库系统在数据存储时会自动按股票代码ID建立索引;由于HBase数据

库在物理存储上按行健自动划分Region,使得按行健分割的同一列族的数

据保存在临近位置的物理存储区中,这样的设计会在最大程度上保证单次

数据操作的独立性(即仅需扫描一个Region),能提高数据操作的效率。

在上述步骤(7)中,“时间戳”中的股票日期时间信息可以由步骤(6)

在上述步骤(7)中,“基本信息列族”中可以通过添加“列标签”(Family

在上述步骤(7)中,“实时数据列族”由32个列标签,分别对应于股

解析后的32个数据项内容,以存储相应的股票数据内容。如图9所

出了存储组织模型下存储数据的一个实例。

在上述步骤(5)至(7)中,采集、解析和存储是设计在一个工作里

如图3所示,本发明基于云计算技术的股票数据采集和存储系统包括

列表文件生成模块1、文件分片大小设置模块2、URL列表文件存储

股票数据采集请求提交模块4、数据采集模块5、数据解析模块6、

URL

模块3、

数据存

的Map任务功能函数中进行的,如果采用多个工作的话,就会因需要额外

消耗一定系统资源进行工作的初始化和分配等计算,而增加数据采集的延

时。

票数据

示,给

Lab)的方式来对发行该股票的公司各方面的信息进行描述,图8仅给出了

4个“列标签”的设计,用户可根据需求动态增加新的列标签以存储描述该

公司其他诸如财务信息的数据。

中解析股票数据的第30和31项信息内容(如图7所示)联合起来得到。

储模块7、以及云计算软件系统支撑模块8。

URL列表文件生成模块1用于获取多个股票代码,并为股票代码生成

文件分片大小设置模块2用于设置云计算平台HDFS存储文件时文件

大小。

URL列表文件存储模块3用于将URL列表文件存储在云计算平台的

上。

股票数据采集请求提交模块4用于向云计算平台提交股票数据采集请

数据采集模块5用于从远程股票数据服务器获取股票数据。

数据解析模块6用于对获取到的股票数据进行格式解析。

数据存储模块7用于将解析后股票数据存储到分布式数据库系统中。

云计算软件系统支撑模块8用于提供URL列表文件生成模块1、文件

分片大小设置模块2、URL列表文件存储模块3、股票数据采集请求提交模

块4、数据采集模块5和数据解析模块6运行的软件支撑环境,主要包括开

源Hadoop软件和HBase开源分布式数据库系统。具体而言,在主、从服务

器上安装Linux操作系统;然后在每台机器上部署Hadoop软件,将主服务

器配置为分布式文件系统HDFS的Namenode节点,并它配置成Hadoop分

布式计算模型MapReduce的JobTracker节点,同时还将其配置成分布式

Hbase数据库的HMaster节点;将从服务器配置为分布式文件系统HDFS

的Datanode节点,并它配置成Hadoop分布式计算模型MapReduce的

求。

HDFS

分片的

对应的URL列表文件。

TaskTracker节点,同时还将其配置成分布式数据库Hbase的HRegionServer

节点。在此基础上,部署本发明的URL列表文件生成模块1、文件分片大

小设置模块2、URL列表文件存储模块3、股票数据采集请求提交模块4、

数据采集模块5、数据解析模块6、数据存储模块7,以实现本发明所提出

的方法。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,

并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等

同替换和改进等,均应包含在本发明的保护范围之内。