c# 访问hbase_大数据技术 windows下C#通过Thrift操作HBase
本篇教程探討了大數(shù)據(jù)技術(shù) windows下C#通過Thrift操作HBase,希望閱讀本篇文章以后大家有所收獲,幫助大家對大數(shù)據(jù)技術(shù)的理解更加深入。
<
1。到apache官網(wǎng)下載Thrift源碼,?http://thrift.apache.org/download,我這里下載的是thrift-0.10.0
2。到apach官網(wǎng)下載thrift.exe,?http://thrift.apache.org/download,?這里下載的是thrift-0.10.0.exe
3。將下載下來的thrift-0.10.0.exe放到thrift-0.10.0/tutorial/目錄下去
4。在windows命令行運行如下這兩條命令:
thrift-0.10.0.exe?--gen?csharp?tutorial.thrift
thrift-0.10.0.exe?--gen?csharp?shared.thrift
運行完以后就會在當(dāng)前目錄下生成一個名為gen-csharp的目錄,到時候需要把這下面的源碼文件添加到項目中去
5。用vs打開thrift-0.10.0/lib/csharp/src/Thrift.sln解決方案,并編譯得到Thrift.dll
6。用vs新建自己的項目,將之前生成的源碼添加進來,并引入Thrift.dll庫。
下面就是Client端的代碼
using?System;
using?Thrift;
using?Thrift.Protocol;
using?Thrift.Server;
using?Thrift.Transport;
namespace?CSharpTutorial
{
public?class?CSharpClient
{
public?static?void?Main()
{
try
{
TTransport?transport?=?new?TSocket("localhost",?9090);
TProtocol?protocol?=?new?TBinaryProtocol(transport);
Calculator.Client?client?=?new?Calculator.Client(protocol);
transport.Open();
try
{
client.ping();
Console.WriteLine("ping()");
int?sum?=?client.add(1,?1);
Console.WriteLine("1+1={0}",?sum);
Work?work?=?new?Work();
work.Op?=?Operation.DIVIDE;
work.Num1?=?1;
work.Num2?=?0;
try
{
int?quotient?=?client.calculate(1,?work);
Console.WriteLine("Whoa?we?can?divide?by?0");
}
catch?(InvalidOperation?io)
{
Console.WriteLine("Invalid?operation:?"?+?io.Why);
}
work.Op?=?Operation.SUBTRACT;
work.Num1?=?15;
work.Num2?=?10;
try
{
int?diff?=?client.calculate(1,?work);
Console.WriteLine("15-10={0}",?diff);
}
catch?(InvalidOperation?io)
{
Console.WriteLine("Invalid?operation:?"?+?io.Why);
}
SharedStruct?log?=?client.getStruct(1);
Console.WriteLine("Check?log:?{0}",?log.Value);
}
finally
{
transport.Close();
}
}
catch?(TApplicationException?x)
{
Console.WriteLine(x.StackTrace);
}
}
}
}
下面是Server端代碼
using?System;
using?System.Collections.Generic;
using?Thrift.Server;
using?Thrift.Transport;
namespace?CSharpTutorial
{
public?class?CalculatorHandler?:?Calculator.Iface
{
Dictionary?log;
public?CalculatorHandler()
{
log?=?new?Dictionary();
}
public?void?ping()
{
Console.WriteLine("ping()");
}
public?int?add(int?n1,?int?n2)
{
Console.WriteLine("add({0},{1})",?n1,?n2);
return?n1?+?n2;
}
public?int?calculate(int?logid,?Work?work)
{
Console.WriteLine("calculate({0},?[{1},{2},{3}])",?logid,?work.Op,?work.Num1,?work.Num2);
int?val?=?0;
switch?(work.Op)
{
case?Operation.ADD:
val?=?work.Num1?+?work.Num2;
break;
case?Operation.SUBTRACT:
val?=?work.Num1?-?work.Num2;
break;
case?Operation.MULTIPLY:
val?=?work.Num1?*?work.Num2;
break;
case?Operation.DIVIDE:
if?(work.Num2?==?0)
{
InvalidOperation?io?=?new?InvalidOperation();
io.WhatOp?=?(int)work.Op;
io.Why?=?"Cannot?divide?by?0";
throw?io;
}
val?=?work.Num1?/?work.Num2;
break;
default:
{
InvalidOperation?io?=?new?InvalidOperation();
io.WhatOp?=?(int)work.Op;
io.Why?=?"Unknown?operation";
throw?io;
}
}
SharedStruct?entry?=?new?SharedStruct();
entry.Key?=?logid;
entry.Value?=?val.ToString();
log[logid]?=?entry;
return?val;
}
public?SharedStruct?getStruct(int?key)
{
Console.WriteLine("getStruct({0})",?key);
return?log[key];
}
public?void?zip()
{
Console.WriteLine("zip()");
}
}
public?class?CSharpServer
{
public?static?void?Main()
{
try
{
CalculatorHandler?handler?=?new?CalculatorHandler();
Calculator.Processor?processor?=?new?Calculator.Processor(handler);
TServerTransport?serverTransport?=?new?TServerSocket(9090);
TServer?server?=?new?TSimpleServer(processor,?serverTransport);
//?Use?this?for?a?multithreaded?server
//?server?=?new?TThreadPoolServer(processor,?serverTransport);
Console.WriteLine("Starting?the?server...");
server.Serve();
}
catch?(Exception?x)
{
Console.WriteLine(x.StackTrace);
}
Console.WriteLine("done.");
}
}
}
本文由職坐標(biāo)整理發(fā)布,學(xué)習(xí)更多的大數(shù)據(jù)技術(shù)相關(guān)知識,請關(guān)注職坐標(biāo)大技術(shù)云計算大技術(shù)技術(shù)頻道!
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的c# 访问hbase_大数据技术 windows下C#通过Thrift操作HBase的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力士乐伺服电机编码器调零_力士乐伺服电机
- 下一篇: rds基于什么开发_为什么不学基于Typ