错误现象:
在使用hazelcast 做批处理时报了如下错误:
java.lang.IllegalArgumentException: These transforms have nothing attached to them: [mapUsingService] at com.hazelcast.jet.impl.pipeline.Planner.validateNoLeakage(Planner.java:248) at com.hazelcast.jet.impl.pipeline.Planner.createDag(Planner.java:86) at com.hazelcast.jet.impl.pipeline.PipelineImpl.toDag(PipelineImpl.java:122) at com.hazelcast.jet.impl.JobCoordinationService.lambda$submitJob$1(JobCoordinationService.java:251) at com.hazelcast.jet.impl.JobCoordinationService.lambda$submitToCoordinatorThread$51(JobCoordinationService.java:1280) at com.hazelcast.jet.impl.JobCoordinationService.lambda$submitToCoordinatorThread$52(JobCoordinationService.java:1301) at com.hazelcast.internal.util.executor.CompletableFutureTask.run(CompletableFutureTask.java:64) at com.hazelcast.internal.util.executor.CachedExecutorServiceDelegate$Worker.run(CachedExecutorServiceDelegate.java:217) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) at com.hazelcast.internal.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76) at com.hazelcast.internal.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:102)
问题分析:
一个完成的过程要包括readSource
和WriteSink
,而代码中缺少了BatchStage
的WriteSink
,它会认为你对这个数据没有做任何处理
解决方法:
对BatchStage收流,做log打印
BatchStage<Stage2> stage= pipline.readFrom(...);
// TODO: 中间操作
stage.writeTo(Sinks.logger());