2017-08-06 26 views
1

I持って、私は次のソースから作成した以下のような簡単な表:https://hortonworks.com/hadoop-tutorial/introduction-apache-hbase-concepts-apache-phoenix-new-backup-restore-utility-hbase/#start-hbase(WHERE句)

次使用:

create 'driver_dangerous_event','events' 
put 'driver_dangerous_event','4','events:driverId','78' 
put 'driver_dangerous_event','4','events:driverName','Carl' 
put 'driver_dangerous_event','4','events:eventTime','2016-09-23 03:25:03.567' 
put 'driver_dangerous_event','4','events:eventType','Normal' 
put 'driver_dangerous_event','4','events:latitudeColumn','37.484938' 
put 'driver_dangerous_event','4','events:longitudeColumn','-119.966284' 
put 'driver_dangerous_event','4','events:routeId','845' 
put 'driver_dangerous_event','4','events:routeName','Santa Clara to San Diego' 
put 'driver_dangerous_event','4','events:truckId','637' 

は私が必要この行を照会するのに、(将来の使用のために)whereフィルターを使用すると、サーバー上で残りのapiまたはthrift APIが実行されています。

残りのAPIを使ってみましたが、できませんでしたか? https://hbasenet.codeplex.com/releases/view/133288私は句は、私が唯一の特定の行を選択できる場所でデータをフィルタリングする方法を理解することはできません:

も私はこのnugetを使用してみました

Hbase.Client c = new Hbase.Client(serverHostName, port, 10000); 
var res = c.Scan<Driver>("driver_dangerous_event", "events", "1"); 

を行うための任意のオプションがありますREST API/Thrift API /その他のC#ライブラリを使用した簡単なフィルタリングされたクエリ?

答えて

0

私は、例えば、REST APIはHBaseのマシン上で実行されていることを確認し、単純なクエリ(https://github.com/hdinsight/hbase-sdk-for-net

// Connection 
RequestOptions scanOptions = RequestOptions.GetDefaultOptions(); 
scanOptions.Port = int.Parse(hbaseDataConnection.Port); 
scanOptions.AlternativeEndpoint = "/"; 
var nodeIPs = new List<string>(); 
nodeIPs.Add(hbaseDataConnection.Address); 
HBaseClient client = new HBaseClient(null, scanOptions, new LoadBalancerRoundRobin(nodeIPs)); 
Scanner scanner = new Scanner { batch = 10 }; 
ScannerInformation scannerInfo = await client.CreateScannerAsync(_tableName, scanner, scanOptions); 
var options = RequestOptions.GetDefaultOptions(); 
options.Port = int.Parse(hbaseDataConnection.Port); 
options.AlternativeEndpoint = "/"; 
options.AlternativeHost = scannerInfo.Location.Host; 

var f1 = new SingleColumnValueFilter(
Encoding.UTF8.GetBytes(ColumnFamilyName), 
Encoding.UTF8.GetBytes("driverName"), 
CompareFilter.CompareOp.Equal, 
new SubstringComparator(fld.Values[0].ToString())) 

var filter = new FilterList(FilterList.Operator.MustPassAll, f1); 
scanner.filter = filter.ToEncodedString(); 

ScannerInformation scanInfo = client.CreateScannerAsync(_tableName, scanner, scanOptions).Result; 
result = RetrieveResults(client, scanInfo, scanOptions).ToList(); 

を予備成形用Microsoft.HBase.Clientを使用

hbase rest start -p 20050 --infoport 20051