1、确保Hbase中已经开启Thrift服务
2、Thrift官网( http://thrift.apache.org/download ) 下载Thrift源码和Thrift.exe文件
3、目前最新的thrift是0.10.0版本,解压thrift-0.10.0.tar.gz文件,然后在目录“…\thrift-0.10.0\lib\csharp\src”里找到C#的源码,如果安装了VS2010以上的版本,可以直接打开Thrift.sln文件,然后生成DLL类库【后期C#访问Hbase的项目中需要引用】,如果你安装了低于VS2010的版本,请新建类库项目,然后将目录“…\thrift-0.10.0\lib\csharp\src”中除了sln和csproj以为的所有文件和文件夹复制到我们新建的类库项目中,然后生成。如下图为最终生成的类库。
4、下载和集群中hbase版本号一致的hbase源码,然后解压,找到里面的Hbase.thrift文件(apache hbase的Hbase.thrift文件位置 :hbase\src\main\resources\org\apache\hadoop\hbase\thrift,cdh hadoop中Hbase.thrift文件位置:hbase-1.2.0-cdh5.9.1\hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift),切记一定是thrif文件中的Hbase.thrift文件,而不是thrift2文件夹中的,两个文件不一样,thrift2文件里面的是精简版本,所以我们一般使用thrift文件夹里面的Hbase.thrif文件。
5、将Hbase.thrift 文件和已经下载的thrift-0.10.0.exe文件放在D盘thrift文件夹下面。然后打开windows命令窗口(win键+R键,然后输入cmd然后回车),输入如下命令进入存放Hbase.thrit目录
接着输入thrift-0.10.0.exe -gen csharp hbase.thrift生成C#访问Hbase的类,如下图
然后新建一个类库项目,把这些cs文件复制到项目中,生成DLL类库。
6、新建一个项目,然后引用上面生成的2个DLL文件,然后编写如下代码就可以用C#访问hbase了。
TTransport tp = new TSocket("hbase ip 地址", 9090);
TProtocol protocol = new TBinaryProtocol(tp);
var client = new Hbase.Client(protocol);
tp.Open();
List<TRowResult> result = client.getRow(Encoding.UTF8.GetBytes("表名"), Encoding.UTF8.GetBytes("rowkey"), null);
string strData="";
foreach (var key in result)
{
strData += Encoding.UTF8.GetString(key.Row)+"\n";
foreach (var k in key.Columns)
{
strData += Encoding.UTF8.GetString(k.Key) + "\n";
strData= Encoding.UTF8.GetString(k.Value.Value) + "\n";
}
}
tp.Close();