Map Reduce工作中的例外情况

时间:2016-08-08 18:42:23

标签: hazelcast hazelcast-imap

我创建了一个地图缩减作业来获取某个地点的员工数量。 我使用的是hazelcast 3.6.3。每位员工都有姓名和地址。

我已将我的代码添加到以下git存储库中。 https://github.com/adasari/hazelcast-demo

例外:

  

java.util.concurrent.ExecutionException:java.lang.ClassCastException:com.hazelcast.mapreduce.aggregation.impl.DistinctValuesAggregation $ SimpleEntry无法强制转换为com.hazelcast.query.impl.Extractable       在com.hazelcast.mapreduce.impl.task.TrackableJobFuture.setResult(TrackableJobFuture.java:68)       在com.hazelcast.mapreduce.impl.task.JobSupervisor.notifyRemoteException(JobSupervisor.java:156)       at com.hazelcast.mapreduce.impl.operation.NotifyRemoteExceptionOperation.run(NotifyRemoteExceptionOperation.java:54)       在com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:172)       在com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:393)       在com.hazelcast.spi.impl.operationexecutor.classic.OperationThread.processPacket(OperationThread.java:184)       在com.hazelcast.spi.impl.operationexecutor.classic.OperationThread.process(OperationThread.java:137)       在com.hazelcast.spi.impl.operationexecutor.classic.OperationThread.doRun(OperationThread.java:124)       在com.hazelcast.spi.impl.operationexecutor.classic.OperationThread.run(OperationThread.java:99)   引起:java.lang.ClassCastException:com.hazelcast.mapreduce.aggregation.impl.DistinctValuesAggregation $ SimpleEntry无法强制转换为com.hazelcast.query.impl.Extractable       在com.hazelcast.query.impl.predicates.AbstractPredicate.readAttributeValue(AbstractPredicate.java:129)       在com.hazelcast.query.impl.predicates.AbstractPredicate.apply(AbstractPredicate.java:55)

你能指出我的问题吗?

感谢。

3 个答案:

答案 0 :(得分:0)

不完全确定您要查找的内容或您要执行的操作(查看代码),但问题出在此处:

引起:java.lang.ClassCastException:com.hazelcast.mapreduce.aggregation.impl.DistinctValuesAggregation $ SimpleEntry无法强制转换为com.hazelcast.query.impl.Extractable

因此,您必须使用SimpleEntry类实现Extractable接口。

答案 1 :(得分:0)

我还没有在MapReduce上工作,但在查看/执行代码时,我的观察结果如下。

  1. 失败的地方是一个不同的SimpleEntry类,DistinctValuesAggregation的内部类,它不会实现Extractable
  2. Hazelcast(#7398)已经存在缺陷,但它在3.6.1中表示已关闭,因此可能会在Git中心跟进它们。
  3. 我发现只运行单个节点运行群集时代码运行良好。所以我怀疑上述缺陷会影响多个节点的聚合。

    HazelcastInstance hazelcastInstance = buildCluster(1);
    

答案 2 :(得分:0)

以下行动解决了问题 - 1. DistinctMapper实现DataSerializable 2. SimpleEntry扩展了QueryableEntry