Details
-
Bug
-
Status: Open
-
Not a Priority
-
Resolution: Unresolved
-
1.7.2
-
None
Description
interface IS<E> extends Iterator<E>, Serializable { } StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.fromCollection(new IS<Object>() { @Override public boolean hasNext() { return false; } @Override public Object next() { return null; } }, Object.class);
Code piece above throws exception:
org.apache.flink.api.common.InvalidProgramException: The implementation of the SourceFunction is not serializable. The object probably contains or references non serializable fields. at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:99) ....
And my workaround is wrapping clean around iterator instance, like this:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.fromCollection(env.clean(new IS<Object>() { @Override public boolean hasNext() { return false; } @Override public Object next() { return null; } }), Object.class);