首页 > 解决方案 > Hazelcast Jet 具有 IMap 源和 OBJECT 内存格式

问题描述

我有 Hazelcast 格式的项目IMapOBJECT并且我正在使用 Jet 聚合操作,将该 IMap 作为管道源。由于 OBJECT 格式,我希望在处理过程中避免对 IMap 中的项目进行任何序列化/反序列化,这与原生 Hazelcast 条目处理和查询的工作方式相同。但是,我可以看到我的项目实际上正在被序列化,然后在传递给我的聚合器之前被反序列化。

以这种方式使用 Jet 时是否可以避免序列化/反序列化步骤?如果是这样,怎么做?

标签: hazelcast-jet

解决方案


是的,本地地图阅读器将始终序列化/反序列化条目。我能想到解决此问题的唯一方法是使用自定义源,该源使用map.localKeySet()然后用于mapUsingIMap对这些键进行连接。源代码如下所示:

SourceBuilder.batch("localKeys", c -> c.jetInstance().getMap("map"))
 .fillBufferFn((map, buf) -> {
    for (Object key : map.localKeySet(predicate)) {
        buf.add(key);
    }
    buf.close();
 }).distributed(1).build());

推荐阅读