使用C 通過Thrift訪問HBase

2022-04-29 12:45:09 字數 1754 閱讀 4805

因為專案需要要為客戶程式提供c#.net的hbase訪問介面,而hbase並沒有提供原生的.net客戶端介面,可以通過啟動hbase的thrift服務來提供多語言支援。

thrift介紹

把環境貼出來是因為不同版本的元件之間可能會存在相容性的問題

thrift安裝:傳送門

hbase: 1.0.3

thrift: 0.9.3

hbase 提供兩個版本的thrift服務:thrift 和 thrift2

thrift 和 thrift2 介紹:傳送門

個人更喜歡新版本的thrift2,更簡單、更強大

注:同一時間只能啟動乙個版本的thrift服務

bin/hbase thrift -b hadoopmaster -p 9099 start

bin/hbase thrift2 -b hadoopmaster -p 9099 start

從thrift的原始碼裡找到c#客戶端的原始碼,路徑:\lib\csharp

用vs開啟解決方案,編譯生成:thrift.dll

從hbase的原始碼裡找到hbase.thrift檔案

thrift:hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift\

thrift2:hbase-thrift\src\main\resources\org\apache\hadoop\hbase\thrift2\

把hbase.thrift和thrift-0.9.3.exe放到同一目錄並執行命令

thrift-0.9.3.exe  -gen csharp hbase.thrift

執行上面命令後會在當前目錄生成乙個包含c#**的資料夾:gen-csharp

在終端執行命令

thrift --gen csharp hbase.thrift

執行上面命令後會在當前目錄生成乙個包含c#**的資料夾:gen-csharp

新建乙個c#類庫專案thrifthbaseclient並把gen-csharp裡面的**拷貝到新專案中

引用thrift專案

編譯生成 thrifthbaseclient.dll

新建乙個控制台專案

引用thrifthbaseclient和thrift專案

在main函式插入下面**

ttransport transport = null

;try

", encoding.utf8.getstring(key.row));

//列印qualifier和對應的value

foreach (var k in

key.columns)

}}catch

(exception e)

finally

}console.readline();

ttransport transport = null

;try

", encoding.utf8.getstring(reslut.row));

foreach (var k in

reslut.columnvalues)

}catch

(exception e)

finally

}console.readline();

參考:

使用C 和Thrift來訪問Hbase例項

今天試著用c 和thrift來訪問hbase,主要參考了上的這篇文章。查了thrift,hbase的資料,結合的這篇文章,終於搞好了。期間經歷了不少彎路,下面我盡量詳細的記錄下來,免得大家走彎路。hbase 0.94.1 vs2012 netframework 4.0 一定要注意各產品的版本號,不同...

windows下C 通過Thrift操作HBase

4。在windows命令列執行如下這兩條命令 thrift 0.10.0.exe gen csharp tutorial.thrift thrift 0.10.0.exe gen csharp shared.thrift 執行完以後就會在當前目錄下生成乙個名為gen csharp的目錄,到時候需要把...

LINUX下通過C 訪問SQLSERVER資料庫

linux下通過c 訪問微軟的資料庫,有點麻煩。微軟官方的linux資料庫驅動支援不好,本例通過unixodbc,使用freetds驅動,再通過soci封裝的odbc方式訪問資料庫 具體版本 unixodbc 2.3.4.tar.gz和freetds 0.95.19.tar.gz tar xvf u...