我们需要在庞大的数据集上以动态方式按多个字段进行分组。数据存储在 Hazelcast Jet 集群中。示例:如果Person
类包含 4 个字段:age
、name
和。我们首先需要按城市分组,然后按国家分组,然后我们可以根据条件参数按名称分组。city
country
我们已经尝试过使用分布式收集但无法正常工作。即使我们尝试使用 Pipeline API,它也会抛出错误。
代码:
IMap res= client.getMap("res"); // res is distrbuted map
Pipeline p = Pipeline.create();
JobConfig jobConfig = new JobConfig();
p.drawFrom(Sources.<Person>list("inputList"))
.aggregate(AggregateOperations.groupingBy(Person::getCountry))
.drainTo(Sinks.map(res));
jobConfig = new JobConfig();
jobConfig.addClass(Person.class);
jobConfig.addClass(HzJetListClientPersonMultipleGroupBy.class);
Job job = client.newJob(p, jobConfig);
job.join();
然后我们在客户端读取地图并销毁它。
服务器上的错误消息:
原因:java.lang.ClassCastException:java.util.HashMap 无法转换为 java.util.Map$Entry