2014-01-14 34 views
0

我已经使用c#的thrift接口从Hbase获取实时数据。我的问题是,过滤查询花费太多时间来从hbase的响应。示例代码如下:如何提高Thrift客户端扫描器查询到Hbase的性能

string TableName="testtable"; 

Dictionary<byte[], byte[]> attributes = new Dictionary<byte[], byte[]>(); 
TScan scanFilter = new TScan(); 

scanFilter.FilterString = ToByteArray("((RowFilter(<=,'binary:1053_1371222000')) AND (RowFilter(>=,'binary:1053_1371217740'))) OR (RowFilter(<=,'binary:1055_1371222000')) AND (RowFilter(>=,'binary:1055_1371217740')))"); 

var scanner = _client.scannerOpenWithScan(ToByteArray(TableName), scanFilter, attributes); 

for (var entry = _client.scannerGet(scanner); entry.Count > 0; entry = _client.scannerGet(scanner)) 
{ 

      foreach (var rowResult in entry) 
      { 
     string rowkey = Encoding.UTF8.GetString(rowResult.Row); 
       Console.Write("{0} => ", rowkey); 

    } 

}

_client.scannerClose(scanner); 

我的问题是:

1)有多少,让我们提升节俭查询的性能(优化)到HBase的。 2)如何在Hbase上缓存Thrift查询响应。 3)如何管理主节点上Thrift服务器的负载均衡。

回答

0

您可以尝试在此缓存。这可能会缩短迭代的时间。

var entry = _client.scannerGetList(scanner,100); 

这里scanner是scannerId返回的,数字表示要缓存的行数。

我是这个领域的新手。你可以试试,但不确定可以实现的性能增益。