0

我已经分区(IMDB)我想在每个节点上启动一个计算任务,该任务在每个节点 IMDB 上针对它执行的节点上的所有记录进行一些计算。因此,每个任务都完成了工作的一部分。似乎托管不太可能,因为我无法限制对节点上数据的访问。请确认或提出解决方案。

4

2 回答 2

0

此代码将向每个节点发送一个闭包,并对节点上的所有数据进行计算:

grid.forCache("mycache").compute().broadcast(new GridRunnable() {
    @Override public void run() {
        for (GridCacheEntry<K, V> e : cache.entrySet()) {
            // Do something
            ... 
        }
    }
}).get();
于 2014-04-15T01:41:23.447 回答
0

听起来您在问如何将计算与缓存数据的节点搭配在一起。您可以查看GridGain 附带的CacheAffinityExample 。具体来说,以下代码片段:

for (int i = 0; i < KEY_CNT; i++) {
    final int key = i;

    // This callable will execute on the remote node where
    // data with the given key is located.
    grid.compute().affinityCall(CACHE_NAME, key, new GridCallable() {
        @Override public void call() throws Exception {
            String val = cache.get(key);

            // Work on cached value.
            ...

            return val;
        }
    }).get();
}
于 2014-04-12T03:26:01.467 回答