Re: Return result stream from ignite compute
Hey, They are deployed already. What itbis complaining about is the lambda inside stream.map(). If I remove it, it works fine. Question is how can we work around stream operations which always take lambda function. On Sun, 3 Apr 2022, 00:15 Ilya Shishkov, wrote: > Hi Surinder, > > Your tasks and nested classes should be in the class path of the > server node. You can deploy them manually or automatically by means of > peer-class loading [1]. > > 1. > https://ignite.apache.org/docs/latest/code-deployment/peer-class-loading > > пт, 1 апр. 2022 г. в 15:12, Surinder Mehra : > >> Hi, I am trying to return the result stream from ignite compute task. >> When compute task has a map() on stream it fails with below error . Can >> someone please explain. >> >> "Exception in thread "main" class >> org.apache.ignite.binary.BinaryObjectException: Failed to deserialize >> object [typeName=java.util.stream.ReferencePipeline$3]" >> >> Setup: One default ignite node >> Compute task >> client node to submit compute task and collect the stream results. >> >> public class StreamTask implements IgniteCallable> { >> @Override >> public Stream call() throws Exception { >> >> Function integerDepartmentFunction = i -> new >> MyFunction().apply(i); >> return IntStream.of(1, 2, 3).boxed().map(integerDepartmentFunction); >> } >> } >> >> class MyFunction implements Function { >> @Override >> public Department apply(Integer integer) { >> return new Department(integer, "sdf"+ integer); >> } >> } >> >> >> IgniteConfiguration cfg = new IgniteConfiguration(); >> cfg.setClientMode(true); >> try (Ignite ignite = Ignition.start(cfg)) { >> >> ClusterGroup serversGrp = ignite.cluster().forServers(); >> >> Stream stream = ignite.compute(serversGrp).call(new >> StreamTask()); >> System.out.println("Stream : "+ stream.collect(Collectors.toList())); >> >> } >> >> Error: >> >> Exception in thread "main" class >> org.apache.ignite.binary.BinaryObjectException: Failed to deserialize object >> [typeName=java.util.stream.ReferencePipeline$3] >> at >> org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:971) >> at >> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1769) >> at >> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1721) >> at >> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319) >> at >> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:304) >> at >> org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:101) >> at >> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:80) >> at >> org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10540) >> >> Caused by: java.lang.ClassNotFoundException: >> training.ignite.compute.StreamTask$$Lambda$894/0x000800670840 >> at java.base/java.lang.Class.forName0(Native Method) >> at java.base/java.lang.Class.forName(Class.java:398) >> at >> org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9064) >> at >> org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9002) >> at >> org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:376) >> at >> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:693) >> >>
Re: Return result stream from ignite compute
Hi Surinder, Your tasks and nested classes should be in the class path of the server node. You can deploy them manually or automatically by means of peer-class loading [1]. 1. https://ignite.apache.org/docs/latest/code-deployment/peer-class-loading пт, 1 апр. 2022 г. в 15:12, Surinder Mehra : > Hi, I am trying to return the result stream from ignite compute task. When > compute task has a map() on stream it fails with below error . Can someone > please explain. > > "Exception in thread "main" class > org.apache.ignite.binary.BinaryObjectException: Failed to deserialize > object [typeName=java.util.stream.ReferencePipeline$3]" > > Setup: One default ignite node > Compute task > client node to submit compute task and collect the stream results. > > public class StreamTask implements IgniteCallable> { > @Override > public Stream call() throws Exception { > > Function integerDepartmentFunction = i -> new > MyFunction().apply(i); > return IntStream.of(1, 2, 3).boxed().map(integerDepartmentFunction); > } > } > > class MyFunction implements Function { > @Override > public Department apply(Integer integer) { > return new Department(integer, "sdf"+ integer); > } > } > > > IgniteConfiguration cfg = new IgniteConfiguration(); > cfg.setClientMode(true); > try (Ignite ignite = Ignition.start(cfg)) { > > ClusterGroup serversGrp = ignite.cluster().forServers(); > > Stream stream = ignite.compute(serversGrp).call(new > StreamTask()); > System.out.println("Stream : "+ stream.collect(Collectors.toList())); > > } > > Error: > > Exception in thread "main" class > org.apache.ignite.binary.BinaryObjectException: Failed to deserialize object > [typeName=java.util.stream.ReferencePipeline$3] > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:971) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1769) > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1721) > at > org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319) > at > org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:304) > at > org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:101) > at > org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:80) > at > org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10540) > > Caused by: java.lang.ClassNotFoundException: > training.ignite.compute.StreamTask$$Lambda$894/0x000800670840 > at java.base/java.lang.Class.forName0(Native Method) > at java.base/java.lang.Class.forName(Class.java:398) > at > org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9064) > at > org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9002) > at > org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:376) > at > org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:693) > >
Return result stream from ignite compute
Hi, I am trying to return the result stream from ignite compute task. When compute task has a map() on stream it fails with below error . Can someone please explain. "Exception in thread "main" class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize object [typeName=java.util.stream.ReferencePipeline$3]" Setup: One default ignite node Compute task client node to submit compute task and collect the stream results. public class StreamTask implements IgniteCallable> { @Override public Stream call() throws Exception { Function integerDepartmentFunction = i -> new MyFunction().apply(i); return IntStream.of(1, 2, 3).boxed().map(integerDepartmentFunction); } } class MyFunction implements Function { @Override public Department apply(Integer integer) { return new Department(integer, "sdf"+ integer); } } IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setClientMode(true); try (Ignite ignite = Ignition.start(cfg)) { ClusterGroup serversGrp = ignite.cluster().forServers(); Stream stream = ignite.compute(serversGrp).call(new StreamTask()); System.out.println("Stream : "+ stream.collect(Collectors.toList())); } Error: Exception in thread "main" class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize object [typeName=java.util.stream.ReferencePipeline$3] at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:971) at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1769) at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1721) at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319) at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:304) at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:101) at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:80) at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10540) Caused by: java.lang.ClassNotFoundException: training.ignite.compute.StreamTask$$Lambda$894/0x000800670840 at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9064) at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:9002) at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:376) at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:693)