使用asynchbase进行扫描

使用asynchbase进行扫描,hbase,Hbase,我从StumbleUpon开始使用这个库,但在继续异步扫描时遇到了一些问题。基于对库原则的理解,我编写了以下代码: public class AsyncScanner implements Callback<Object, ArrayList<ArrayList<KeyValue>>> { private final Scanner scan; public AsyncScanner(Scanner scan) { t

我从StumbleUpon开始使用这个库,但在继续异步扫描时遇到了一些问题。基于对库原则的理解,我编写了以下代码:

public class AsyncScanner
    implements Callback<Object, ArrayList<ArrayList<KeyValue>>> {
    private final Scanner scan;

    public AsyncScanner(Scanner scan) {
        this.scan = scan;
    }

    public void start() {
        scan.nextRows().addCallback(this);
    }

    @Override
    public Object call(ArrayList<ArrayList<KeyValue>> rows) throws Exception {
        if (rows == null) {
            return null;
        }
        // some useful things here
        scan.nextRows().addCallback(this);
        return null;
    }
}
此外,在异步文档中有这样一个短语:

您不能构建相互依赖的延迟循环,因为这将导致无限递归(谢天谢地,它将很快因StackOverflower错误而失败)

但我认为,这不是我的情况

我计划跟踪asynchbase以找出我的代码有什么问题,但如果有人能向我展示连续扫描的工作示例,这将非常有帮助

更新: 当你发布一段没有错误的代码时,这是一个尴尬的时刻。 问题出在来电者身上。我需要做一次扫描结束退出。我写道:

   Scanner scanner = hclient.newScanner(TABLE);
   <!--cut some initialization--!>
   new AsyncScanner(scanner).start();
   hclient.shutdown().joinUninterruptibly();
Scanner scanner = hclient.newScanner(TABLE);
<!--cut some initialization--!>
new AsyncScanner(scanner).start();
hclient.shutdown().joinUninterruptibly();
Scanner Scanner=hclient.newScanner(表);
更新副本:
当你发布一段没有错误的代码时,这是一个尴尬的时刻。问题出在来电者身上。我需要做一次扫描结束退出。我写道:

   Scanner scanner = hclient.newScanner(TABLE);
   <!--cut some initialization--!>
   new AsyncScanner(scanner).start();
   hclient.shutdown().joinUninterruptibly();
Scanner scanner = hclient.newScanner(TABLE);
<!--cut some initialization--!>
new AsyncScanner(scanner).start();
hclient.shutdown().joinUninterruptibly();
Scanner Scanner=hclient.newScanner(表);

请将您的更新作为答案发布并接受,以防止此问题出现在未回答的队列中?