This is a pure CSharp client for HBase.
HBase >= 1.0
varZkQuorum="zooKeep-host-ip";varadmin=awaitnewAdminClient(ZkQuorum).Build();if(admin==null)return;varclient=awaitnewStandardClient(ZkQuorum).Build();if(client==null)return;vartable="student";varcols=new[]{newColumnFamily("info"){Compression=Compression.GZ,KeepDeletedCells=KeepDeletedCells.TRUE},newColumnFamily("special"){Compression=Compression.GZ,KeepDeletedCells=KeepDeletedCells.TTL,DataBlockEncoding=DataBlockEncoding.PREFIX}};varcreate=newCreateTableCall(table,cols){SplitKeys=new[]{"0","5"}};varlistTable=newListTableNamesCall();vardisable=newDisableTableCall(table);vardelete=newDeleteTableCall(table);varct=awaitadmin.CreateTable(create);vartables=awaitadmin.ListTableNames(listTable);vardt=awaitadmin.DisableTable(disable);vardel=awaitadmin.DeleteTable(delete);vartable="student";// putvarrowKey="123";varvalues=newDictionary<string,IDictionary<string,byte[]>>{{"default",newDictionary<string,byte[]>{{"key","value".ToUtf8Bytes()}}}};varrs=awaitclient.Put(newMutateCall(table,rowKey,values));// scanvarsc=newScanCall(table,"1",""){NumberOfRows=100000};usingvarscanner=client.Scan(sc);varscanResults=newList<Result>();while(scanner.CanContinueNext){varper=awaitscanner.Next();if(true!=per?.Any())continue;scanResults.AddRange(per);}// getvargetResult=awaitclient.Get(newGetCall(table,rowKey));// deletevardelResult=awaitclient.Delete(newMutateCall(table,rowKey,null));publicclassStudent{publicstringName{get;set;}publicstringAddress{get;set;}publicintAge{get;set;}publicfloatScore{get;set;}publicbool?IsMarried{get;set;}[HBaseConverter(typeof(DateTimeUnix13Converter))]publicDateTimeCreate{get;set;}[HBaseProperty(family:"special")][HBaseConverter(typeof(DateTimeUnix13Converter))]publicDateTime?Modify{get;set;}[HBaseConverter(typeof(JsonStringConverter))]publicList<string>Courses{get;set;}}varconvertCache=newConvertCache().BuildCache<Student>(EndianBitConverter.BigEndian);varstudent=newStudent{Name="Anna",Age=20,Address="Yuxi, China",Score=99,IsMarried=true,Create=DateTime.Now,Courses=newList<string>{"Mathematics","physics","art"}};//object convert to values varvalues=HBaseConvert.Instance.ConvertToDictionary(student,convertCache);varrs=awaitclient.Put(newMutateCall(Program.Table,rowKey,values));//scan result convert to object of studentusingvarscanner=client.Scan(sc);varscanResults=newList<Student>();while(scanner.CanContinueNext){varper=awaitscanner.Next();if(true!=per?.Any())continue;varstus=HBaseConvert.Instance.ConvertToCustom<Student>(per,convertCache);scanResults.AddRange(stus);}You can also refer to the "Samples/HBaseNet.Console" project.