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