我已经分区(IMDB)我想在每个节点上启动一个计算任务,它在每个节点IMDB上对其执行的节点上的所有记录进行一些计算。因此,每项任务都是工作的一部分。 由于我无法限制对节点上数据的访问,因此似乎不太可能进行共置。 请确认或建议解决方案。
答案 0 :(得分: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();
}
答案 1 :(得分:0)
此代码将向每个节点发送一个闭包,并对节点上的所有数据进行计算:
grid.forCache("mycache").compute().broadcast(new GridRunnable() {
@Override public void run() {
for (GridCacheEntry<K, V> e : cache.entrySet()) {
// Do something
...
}
}
}).get();