近期着手的一個項目須要將我方數據存儲到Hadoop的大數據環境,因爲本人是.net平臺的開發者,沒有怎麼接觸過大數據(由於他實在是過高大尚了)。但還好baidu, google後,仍是很找到了解決辦法,就是C#寫數據到hbase,而後大數據開發者在從hbase讀取數據進行多維度處理,如將一部分歷史數據轉移到hive,或者是將一部分數據推送到機器學習庫進行學習。html
注意Hbase的版本必定要與運行的Hbase對應。c#
請選擇thrift,而不是thrift2,緣由thrift接口看上更爲好用機器學習
thrift生成代碼能夠參考的我《半小時入Thrift》maven
輸入以下命令:oop
hbase-daemon.sh start thrift hbase-daemons.sh start thrift (集羣版本)
默認的thrift端口是9090,能夠在hbase-site.xml配置文件中修改默認端口。學習
var transport = new TSocket("10.34.51.62", 9090); TProtocol protocol = new TBinaryProtocol(transport); var client = new Hbase.Client(protocol); transport.Open(); var tabls = client.getTableNames(); foreach(var t in tabls) { Console.WriteLine(Encoding.Default.GetString(t)); } //寫 Mutation mutation = new Mutation(); mutation.Column = Encoding.UTF8.GetBytes("personal_data:abc"); mutation.Value = Encoding.UTF8.GetBytes("Hello"); client.mutateRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes("008"), new List<Mutation> { mutation }, null); Console.WriteLine("add success"); var row = client.getRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes("008"), null); foreach (var r in row) { Console.WriteLine(Encoding.UTF8.GetString(r.Row)); foreach(var c in r.Columns) { Console.WriteLine("-- " + Encoding.UTF8.GetString(c.Key) + ":" + Encoding.UTF8.GetString(c.Value.Value)); } } client.deleteAllRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes("008"), null); Console.WriteLine("delete success"); Console.ReadKey(); transport.Close();
上述代碼實現了hbase寫入,讀取,刪除等功用。測試
成功寫入。大數據
1. 注意選擇thrift和版本,經過查看maven的依賴得到google
2. 使用thirft版本,而不是thrift2spa
3. hbase的rowKey+列Key相同時,會對數據進行修改