我有IMap
格式的Hazelcast OBJECT
项目,并且我正在使用Jet聚合操作,并将该IMap作为管道源。由于对象格式的原因,我希望避免在处理过程中对IMap中的项目进行任何序列化/反序列化,这与本地Hazelcast条目处理和查询的工作方式相同。但是,我可以看到我的项目实际上已经被序列化,然后反序列化,然后再传递给聚合器。
以这种方式使用Jet时,是否可以避免序列化/反序列化步骤?如果可以,怎么办?
我有IMap
格式的Hazelcast OBJECT
项目,并且我正在使用Jet聚合操作,并将该IMap作为管道源。由于对象格式的原因,我希望避免在处理过程中对IMap中的项目进行任何序列化/反序列化,这与本地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());