0

私はHazelcast 3.6 IMapを使用して大量のデータを分散保存しています(1B項目でテストしました)。2 つの IMap インスタンスをキーで結合したいのですが、それを行うための組み込み機能がないようです。そのため、@PatritionAwareキーが等しい場合はこれらのマップのエントリを同じノードに格納しSet<K> localKeySet();、クラスタの各メンバーで最初のマップを使用しています。その後、同じノード上の 2 番目のマップから値を取得して、ネットワークによる述語キーの転送を回避しようとします。しかしgetAll(Set<K> keys)、同じノードではそうではないようです。誰かがすでに同じ問題を抱えていますか? Hazelcast の機能に基づいて解決できますか?

以下のコード例を参照してください


public class PartitionAwareKey implements PartitionAware, Serializable {

    private Integer key;

    public PartitionAwareKey(Integer key) {
        this.key = key;
    }

    @Override
    public Integer getPartitionKey() {
        return this.key;
    }
}




public class FindDataWithPredicateTask implements HazelcastInstanceAware, Serializable, Callable>> {
 ...
    @Override
    public IMap call() throws Exception {
        IMap map1 = hazelcastInstance.getMap("map1");
        Set localKeySet = map1.localKeySet();

        IMap, String> map2 = hazelcastInstance.getMap("map2");

        return map2.getAll(localKeySet);
    }
...

4

1 に答える 1