小编mya*_*yas的帖子

用asynchbase扫描

我开始使用StumbleUpon的asynchbase库,并且在继续异步扫描时遇到了一些问题.我根据对图书馆原则的理解编写了这段代码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在大扫描中使用此代码我得到了StackOverflowError:

java.lang.StackOverflowError
    at java.util.concurrent.atomic.AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl.compareAndSet(AtomicIntegerFieldUpdater.java:279)
    at com.stumbleupon.async.Deferred.casState(Deferred.java:580)
    at com.stumbleupon.async.Deferred.access$100(Deferred.java:430)
    at com.stumbleupon.async.Deferred$Continue.call(Deferred.java:1342)
    at com.stumbleupon.async.Deferred.doCall(Deferred.java:1262)
    at com.stumbleupon.async.Deferred.runCallbacks(Deferred.java:1241)
    at com.stumbleupon.async.Deferred.access$300(Deferred.java:430)
    at com.stumbleupon.async.Deferred$Continue.call(Deferred.java:1350)
    at com.stumbleupon.async.Deferred.doCall(Deferred.java:1262)
    at com.stumbleupon.async.Deferred.runCallbacks(Deferred.java:1241)
    at com.stumbleupon.async.Deferred.access$300(Deferred.java:430)
    at com.stumbleupon.async.Deferred$Continue.call(Deferred.java:1350) …
Run Code Online (Sandbox Code Playgroud)

hbase

10
推荐指数
1
解决办法
2136
查看次数

标签 统计

hbase ×1