c# 访问hbase_HBase(二): c#访问HBase之股票行情Demo

public classStockRealWriter

{#region StockRealWriterQueue queue = new Queue();//use multithread write

Thread writerThread;bool threadRunning = true;const string HBASESTOCKTBLNAME = "StockRealInfo";publicStockRealWriter()

{//Start a thread for writting to HBase

Task task = newTask(WriterThreadFunction);

task.Start();

}~StockRealWriter()

{

threadRunning= false;

}#endregion

#region WriterThreadFunction

///

///WriterThreadFunction///

public voidWriterThreadFunction()

{while(threadRunning)

{if (queue.Count > 0)

{lock(queue)

{

CellSetset = newCellSet();do{

StockRealInfo stock=queue.Dequeue();this.CreateStockByRealInfos(set, stock);

}while (queue.Count > 0);

Utils.HBaseClient.StoreCellsAsync(HBASESTOCKTBLNAME,set);

}

}

Thread.Sleep(5000);

}

}#endregion

#region CreateStockByRealInfos

///

///

///

///

///

private void CreateStockByRealInfos(CellSet set, StockRealInfo info)

{string key = string.Format("{0}_{1}_{2}", info.ID, info.Date, info.Time);var row = new CellSet.Row { key =Encoding.UTF8.GetBytes(key) };var value = new Cell { column = Encoding.UTF8.GetBytes("d:ID"), data =Encoding.UTF8.GetBytes(info.ID) };

row.values.Add(value);

value= new Cell { column = Encoding.UTF8.GetBytes("d:Name"), data =Encoding.UTF8.GetBytes(info.Name) };

row.values.Add(value);//今日开盘价

value = new Cell { column = Encoding.UTF8.GetBytes("d:TodayOpen"), data =Encoding.UTF8.GetBytes(info.TodayOpen) };

row.values.Add(value);//昨日收盘价

value = new Cell { column = Encoding.UTF8.GetBytes("d:YesterdayClose"), data =Encoding.UTF8.GetBytes(info.YesterdayClose) };

row.values.Add(value);//当前价格

value = new Cell { column = Encoding.UTF8.GetBytes("d:Current"), data =Encoding.UTF8.GetBytes(info.Current) };

row.values.Add(value);//今日最高价

value = new Cell { column = Encoding.UTF8.GetBytes("d:High"), data =Encoding.UTF8.GetBytes(info.High) };

row.values.Add(value);//今日最低价

value = new Cell { column = Encoding.UTF8.GetBytes("d:Low"), data =Encoding.UTF8.GetBytes(info.Low) };

row.values.Add(value);//竟买价 买1

value = new Cell { column = Encoding.UTF8.GetBytes("d:Buy"), data =Encoding.UTF8.GetBytes(info.Buy) };

row.values.Add(value);//竟卖价 卖1

value = new Cell { column = Encoding.UTF8.GetBytes("d:Sell"), data =Encoding.UTF8.GetBytes(info.Sell) };

row.values.Add(value);//成交数 单位股数 通常除于100成为手

value = new Cell { column = Encoding.UTF8.GetBytes("d:VolAmount"), data =Encoding.UTF8.GetBytes(info.VolAmount) };

row.values.Add(value);//成交多少钱,单位元

value = new Cell { column = Encoding.UTF8.GetBytes("d:VolMoney"), data =Encoding.UTF8.GetBytes(info.VolMoney) };

row.values.Add(value);//日期

value = new Cell { column = Encoding.UTF8.GetBytes("d:Date"), data =Encoding.UTF8.GetBytes(info.Date) };

row.values.Add(value);//时间

value = new Cell { column = Encoding.UTF8.GetBytes("d:Time"), data =Encoding.UTF8.GetBytes(info.Time) };

row.values.Add(value);//差额

value = new Cell { column = Encoding.UTF8.GetBytes("d:Diff"), data =Encoding.UTF8.GetBytes(info.Diff) };

row.values.Add(value);//百分比

value = new Cell { column = Encoding.UTF8.GetBytes("d:DiffPrec"), data =Encoding.UTF8.GetBytes(info.DiffPrec) };

row.values.Add(value);

DataRow buyInfo;for(int i=0;i<5;i++)

{

buyInfo=info.BuyList.Rows[i];

value= new Cell { column = Encoding.UTF8.GetBytes(string.Format("d:Price0{0}",i.ToString())), data = Encoding.UTF8.GetBytes(Convert.ToString(buyInfo["Price"])) };

row.values.Add(value);

value= new Cell { column = Encoding.UTF8.GetBytes(string.Format("d:Amount0{0}", i.ToString())), data = Encoding.UTF8.GetBytes(Convert.ToString(buyInfo["Amount"])) };

row.values.Add(value);

}

DataRow sellInfo;for (int i = 0; i < 5; i++)

{

sellInfo=info.SellList.Rows[i];

value= new Cell { column = Encoding.UTF8.GetBytes(string.Format("d:Price1{0}", i.ToString())), data = Encoding.UTF8.GetBytes(Convert.ToString(sellInfo["Price"])) };

row.values.Add(value);

value= new Cell { column = Encoding.UTF8.GetBytes(string.Format("d:Amount1{0}", i.ToString())), data = Encoding.UTF8.GetBytes(Convert.ToString(sellInfo["Amount"])) };

row.values.Add(value);

}set.rows.Add(row);

}#endregion

#region WriteStock

///

///

///

///

public void WriteStock(ListstockInfos)

{lock(queue)

{foreach(var stockInfo instockInfos)

{

queue.Enqueue(stockInfo);

}

}

}#endregion}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值