今天試著用c#和thrift來訪問hbase,主要參考了上的這篇文章。查了thrift,hbase的資料,結合的這篇文章,終於搞好了。期間經歷了不少彎路,下面我盡量詳細的記錄下來,免得大家走彎路。
hbase 0.94.1
vs2012(.netframework 4.0)
一定要注意各產品的版本號,不同的版本可能相互不相容。
下面開始幹活:
0.開啟hbase的thrift服務
在hbase的master上執行:hbase-daemon.sh start thrift -threadpool
thrift-0.7.0.exe和thrift源**:
thrift-0.7.0.tar.gz2.編譯thrift
3.生成**
將hbase安裝包解壓,或者從現有集群上拷貝也可。找到這個目錄:hbase/src/main/resources/org/apache/hadoop/hbase/thrift,在該目錄下找到檔案hbase.thrift。注意,千萬不要找到thrift2目錄裡去了,我就在這裡走了彎路,因為thrift2比thrift精簡了不少介面,而且呼叫方式及介面引數也已經改變了。具體參考這個文章。算了,我還是貼出來吧,免得文章失效:
thrift
thrift2
結構
struct tcell
struct columndescriptor
struct tregioninfo
struct mutation
struct batchmutation
struct tincrement
struct tcolumn
struct trowresult
struct tscan
struct ttimerange
struct tcolumn
struct tcolumnvalue
struct tcolumnincrement
struct tresult
struct tget
struct tput
struct tdelete
struct tincrement
struct tscan
struct trowmutations
異常
exception ioerror
exception illegalargument
exception alreadyexists
exception tioerror
exception tillegalargument
其他
union tmutation
enum tdeletetype
enum tdurability
服務
名稱為:hbase
void enabletable()
void disabletable()
bool istableenabled()
void compact()
void majorcompact()
listgettablenames()
mapgetcolumndescriptors()
listgettableregions()
void createtable()
void deletetable()
listget()
listgetver()
listgetverts()
listgetrow()
listgetrowwithcolumns()
listgetrowts()
listgetrowwithcolumnsts()
listgetrows()
listgetrowswithcolumns()
listgetrowsts()
listgetrowswithcolumnsts()
void mutaterow()
void mutaterowts()
void mutaterows()
void mutaterowsts()
i64 atomicincrement()
void deleteall()
void deleteallts()
void deleteallrow()
void increment()
void incrementrows()
void deleteallrowts()
scannerid scanneropenwithscan()
scannerid scanneropen()
scannerid scanneropenwithstop()
scannerid scanneropenwithprefix()
scannerid scanneropents()
scannerid scanneropenwithstopts()
listscannerget()
listscannergetlist()
void scannerclose()
listgetroworbefore()
tregioninfo getregioninfo()
名稱為:thbaseservice
bool exists(...)
tresult get(...)
listgetmultiple(...)
void put(...)
bool checkandput(...)
void putmultiple(...)
void deletesingle(...)
listdeletemultiple(...)
bool checkanddelete(...)
tresult increment(...)
i32 openscanner(...)
listgetscannerrows(...)
void closescanner(...)
void mutaterow(...)
listgetscannerresults(...)
4.編寫測試**
ttransport transport = null;
try",encoding.utf8.getstring(key.row));
//列印qualifier和對應的value
foreach (var k in key.columns)}}
catch (exception e)
finally
}console.readline();
現在除錯該專案,由於我的表中該key對應的值為24,所以程式列印出如下結果:
rowkey:
201310_001_0_1100
family:qualifier:
d:ipn
value:24
至此,用c#和thrift連線hbase的功能實現完畢。
使用 HttpLib 來訪問 Web 服務
c 為開發者提供很多便利方法用來訪問各種 web 服務,但是編寫非同步的訪問方式卻是有點複雜。windows 通訊框架是乙個客戶端 伺服器通訊非常棒的工具。我精彩發現我自己必須寫很多 來使用已有的 api。微軟提供的這些 api 對一些基本的使用來說都是過於複雜。而 httplib 大大的簡化了在 ...
使用OTL來訪問資料庫
使用otl來訪問資料庫 牽著老婆滿街逛 c 部落格 使用otl來訪問資料庫 otl介紹 otl 是 oracle,odbc and db2 cli template library 的縮寫,是乙個c 編譯中操控關聯式資料庫的模板庫,它目前幾乎支援所有的當前各種主流資料庫,例如oracle,ms sq...
perl 使用SUPER類來訪問覆蓋的方法
有時候,你希望乙個衍生類的方法表現得象基類中的某些方法的封裝器 這就是 super 偽類提供便利的地方。它令你能夠呼叫乙個覆蓋了的基類方法,而不用宣告 是哪個類定義了該方 法。注 不要把這個和第十一章的覆蓋 perl 的內建函式的機制混淆 了,那個不是物件方法並且不會被繼承覆 蓋。你呼叫內建函式的覆...