스캐너를 사용할 때 설정이 시작되고 중지 될 때 특정 행을 검색하는 배치 스캐너를 얻을 수 없습니다.이 예외가 발생합니다 :Accumulo createBatchScanner 범위가 예상대로 작동하지 않습니다.
...
내가 쓰고 있어요 "java.lang.IllegalArgumentException가 : 키를 시작 범위에서 (: [] 거짓, 테스트 [] 거짓이 시험) 최종 키보다 작은이어야합니다" Visual Studio 2010의 C#에서 Thrift (ver 0.9.1.1) 및 Accumulo (ver 1.5.0) proxy.thrift 코드를 프로젝트에서 사용합니다. 여기
내 코드, 모든 "작동"하지만,이 코드를 보여주는 Accumulo 1.5client.nextK
class Program
{
static byte[] GetBytes(string str)
{
return Encoding.ASCII.GetBytes(str);
}
static string GetString(byte[] bytes)
{
return Encoding.ASCII.GetString(bytes);
}
static void Main(string[] args)
{
try
{
/** connect **/
TTransport transport = new TSocket("192.168.58.62", 42424);
transport = new TFramedTransport(transport);
TCompactProtocol protocol = new TCompactProtocol(transport);
transport.Open();
AccumuloProxy.Client client = new AccumuloProxy.Client(protocol);
Dictionary<string, string> passwd = new Dictionary<string,string>();
passwd.Add("password", "password");
var login = client.login("root", passwd);
/** connect end **/
/** Get all data from one "Row" **/
var bScanner = new BatchScanOptions();
Range range = new Range();
range.Start = new Key();
range.Start.Row = GetBytes("Test");
range.Stop = new Key();
range.Stop.Row = GetBytes("Test");
bScanner.Ranges = new List<Range>();
bScanner.Ranges.Add(range);
var scanId = client.createBatchScanner(login, "firstTable", bScanner);
var more = true;
while (more)
{
var scan = client.nextK(scanId, 10);
more = scan.More;
foreach (var entry in scan.Results)
{
Console.WriteLine("{0} {1}:{2} [{3}] {4}", GetString(entry.Key.Row), GetString(entry.Key.ColFamily), GetString(entry.Key.ColQualifier), GetString(entry.Key.ColVisibility), GetString(entry.Value));
}
}
client.closeScanner(scanId);
Console.WriteLine();
/** Get data end **/
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
사용자 설명서에서 모든 항목을하지 않으며 그것이 내가 '과 동일 m하고 (그러나 C에서 #) : (http://accumulo.apache.org/1.5/accumulo_user_manual.html#_basic_table)
Range r = new Range(userid, userid); // single row
Scanner s = conn.createScanner("userdata", auths);
s.setRange(r);
s.fetchColumnFamily(new Text("age"));
for(Entry<Key,Value> entry : s)
System.out.println(entry.getValue().toString());
고마워, 이제 작동 해 : D 방금 Range \ Stop의 끝에 \ 0을 추가했습니다. – loliman