你的位置:
首页
>
软件开发 >
数据库 > HBase(二): c#访问HBase之股票行情Demo
HBase(二): c#访问HBase之股票行情Demo
发布时间:2016-08-10 20:00:07
上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证。场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存中模拟的MQ (实际生产情况,可用kafka等集群代替)->存入HBase ...
上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证。场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存中模拟的MQ (实际生产情况,可用kafka等集群代替)->存入HBase数据库。提供按指定时间范围股票价格数据查询。
目录:
- 示例说明
- 示例效果图
- rest server运行状态检查
- 获取股票实时数据代码
- 数据持续化至Hbase代码
- 从HBase读取数据代码
示例说明:
- StocksInfo (股票信息表,用来存储设置的股票代码、股票名称)
- StockRealInfo (股票实时行情数据,包含开盘价、当前价、最高价、最低价、五档竞买、卖单价和数量、成交单价、数量、涨跌幅等)
- 每5秒钟抓取StocksInfo表中所有股票的数据,自动更新UI,持续化到HBase;支持增加、删除要监控的股票列表。
- 提供按指定时间范围从hbase中查询历史数据
示例效果图:
- 历史数据查询:
rest server运行状态检查:
- 在 HDP2.4安装(五):集群及组件安装 章节,Hbase 主机安装在 hdp4 192.168.2.21 上,使用xshell 工具连接到hbase master(hdp4)
- 查看8080端口是否正常,也可从 ambari UI 界面查看HBase状态,如图:
获取股票实时数据代码:
- 好多的网站提供股票实时交易数据的下载,我选择的是从 hq.sina 下载,注意抓取数据的频度不要设置的太高,否则你的IP可能会被封掉,代码如下:
public class SnatchFormSina { #region SnatchFormSina HttpClient client; private const string dataurl = "http://hq.sinajs.cn/list={0}"; public SnatchFormSina() { this.client = new HttpClient(); } /// <summary> /// /// </summary> public static SnatchFormSina Current { get { return new SnatchFormSina(); } } #endregion #region GetCurrentInfos /// <summary> /// /// </summary> /// <param name="stockIDs"></param> /// <returns></returns> public async Task<List<StockRealInfo>> GetCurrentInfosAsync(List<string> stockIDs) { List<StockRealInfo> list = new List<StockRealInfo>(); string dataUrl = this.ParseStockIDs(stockIDs); dataUrl = dataUrl.Substring(0, dataUrl.Length - 1); string realInfo = await this.client.GetStringAsync(dataUrl); string[] infos = realInfo.Split('\n'); StockRealInfo stockInfo; foreach (string info in infos) { if (string.IsNullOrEmpty(info)) continue; stockInfo = new StockRealInfo(info); stockInfo.ID = SimulatorCache.StockAccount[stockInfo.Name]; SimulatorCache.StockInfos[stockInfo.ID] = stockInfo; list.Add(stockInfo); } return list; } #endregion #region ParseStockIDs /// <summary> /// /// </summary> /// <param name="stockIDs"></param> /// <returns></returns> private string ParseStockIDs(List<string> stockIDs) { StringBuilder sb = new StringBuilder(); foreach(string id in stockIDs) { if (id.Substring(0, 2) == "60")//上海是600打头 { sb.Append(string.Format("sh{0},", id)); } else if (id.Substring(0, 2) == "51")//上海基金 { sb.Append(string.Format("sh{0},", id)); } else //if (stockIDs.Substring(0, 2) == "00")//深圳 { sb.Append(string.Format("sz{0},", id)); } } sb[sb.Length - 1].ToString().Replace(",", ""); return string.Format(dataurl, sb.ToString()); } #endregion #region ValiateStockID /// <summary> /// /// </summary> /// <param name="stockIDs"></param> /// <returns></returns> public async Task<string> ValiateStockID(string stockID) { string name = string.Empty; string dataUrl = this.ParseStockIDs(new List<string> { stockID }); dataUrl = dataUrl.Substring(0, dataUrl.Length - 1); string realInfo = await this.client.GetStringAsync(dataUrl); string[] infos = realInfo.Split('\n'); StockRealInfo stockInfo; foreach (string info in infos) { if (string.IsNullOrEmpty(info)) continue; stockInfo = new StockRealInfo(info); name = stockInfo.Name; } return name; } #endregion }
原标题:HBase(二): c#访问HBase之股票行情Demo
关键词:C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。