我使用了与c#的thrift接口来从Hbase获取实时数据。我的问题是,过滤查询花费了太多时间来响应来自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)我们可以通过多少方式改善Thrift查询到hbase的性能(优化)。 2)如何在Hbase上缓存Thrift查询响应。 3)如何在主节点上管理Thrift服务器的负载均衡。
答案 0 :(得分:0)
您可以在此处尝试缓存。这可能会在一定程度上缩短迭代时间。
var entry = _client.scannerGetList(scanner,100);
此处扫描程序是返回的ScannerId,数字表示要缓存的行数。
是这个领域的新手。您可以尝试一下,但我不确定可以实现的性能提升。