C#通过thrift连接hbase操作步骤

Vicky ·
更新时间:2024-11-10
· 764 次阅读

    1、 下载thrift-0.9.1.exe和源码包thrift-0.9.1.tar.gz   2、利用thrift-0.9.1.exe工具生成thrift连接hbase的客户端接口代码:   从hbase源码包目录   hbase-0.96.0-srchbase-0.96.0hbase-thriftsrcmainesourcesorgapachehadoophbase hrift   找到HBase.Thrift文件,拷贝至thrift-0.9.1.exe同一目录下:   在cmd命令行里切换到thrift-0.9.1目录下,执行下面的脚本,自动生成thrift的客户端c#接口代码,代码在gen-csharp目录文件里:   thrift-0.9.1.exe -gen csharp HBase.Thrift   3、在vs2010里创建解决方案   HBaseThriftAPI,新建2个工程,一个是Thrift(在解决方案上单击右键,选择添加-现有项目thrift-0.9.1libcsharpsrcThrift.sln),是从thrift-0.9.1的源码包里添加而来,然后编译生成动态库,   另外新建一个工程IThrift,把自动生成的接口代码添加进来,同时在应用中把Thrift的编译结果引用过来,   同时在ithrift里新建一个连接hbase里面thrift的测试客户端程序(TestClient.cs),代码如下(注意里面连接的IP、端口、表名、行键4个参数需要根据实际的替换一下):
using System; using System.Collections.Generic; using System.Threading; using Thrift.Collections; using Thrift.Protocol; using Thrift.Transport; using System.Text; namespace Test { publicclassTestClient { publicstaticvoid Main(string[] args) { try { TTransport transport = new TSocket("192.168.0.101", 9090);//连接的IP、端口 TProtocol tProtocol = new TBinaryProtocol(transport); var client = new Hbase.Client(tProtocol); transport.Open(); List<TRowResult> reslut = client.getRow(Encoding.UTF8.GetBytes("test"),Encoding.UTF8.GetBytes("a"),null);//前面是表名、后面是行键名 foreach (var key in reslut) { Console.WriteLine(Encoding.UTF8.GetString(key.Row)); foreach (var k in key.Columns) { Console.Write(Encoding.UTF8.GetString(k.Key) +" "); Console.WriteLine(Encoding.UTF8.GetString(k.Value.Value)); } } Console.ReadLine(); } catch (Exception e) { Console.WriteLine(e.StackTrace); } } } }
后编译IThrift,生成IThrift.exe   注:本人环境vs2010+framework3.5   4、启动hadoop、hbase、thrift服务端   启动hadoop集群:   zzk1@zzk1-vm2:~/hadoop-1.2.1$bin/start-all.sh   启动hbase服务:   zzk1@zzk1-vm2:~/hbase-0.96.0-hadoop1/bin$ ./start-hbase.sh   启动服务端hbase里的thrift服务:   zzk1@zzk1-vm2:~/hbase-0.96.0-hadoop1/bin$ hbase-daemon.sh start thrift   5、验证c#通过thrift连接hbase是否成功:   用hbase shell命令进入hbase,查看表test数据(scan 'test')   点击vs2010生成的客户端ithrift.exe,可以看到连接到hbase,同时显示了表test的数据,和服务端hbase shell查出来的一致.



C# thrift hbase

需要 登录 后方可回复, 如果你还没有账号请 注册新账号