Just small change from PojoExample: PojoExample.java <http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/file/t921/PojoExample.java> public class PojoExample<KEY> { private SelectorContainer<KEY> selectorContainer; // KeySelector class like this can't be used in flink !!! public static class SelectorContainer<K> implements KeySelector<Word ,K> { public KeySelector<Word, K> keySelector; public SelectorContainer(KeySelector<Word, K> keySelector) { this.keySelector = keySelector; }
@Override public K getKey(Word value) throws Exception { return keySelector.getKey(value); } } public void run() { dataStream.keyed(selectorContainer); } } This will cause: Type of TypeVariable 'K' in 'class org.apache.flink.streaming.examples.wordcount.PojoExample$SelectorContainer' could not be determined. This is most likely a type erasure problem. The type extraction currently supports types with generic variables only in cases where all variables in the return type can be deduced from the input type(s). org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:915) org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:836) org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:622) org.apache.flink.api.java.typeutils.TypeExtractor.getKeySelectorTypes(TypeExtractor.java:443) org.apache.flink.api.java.typeutils.TypeExtractor.getKeySelectorTypes(TypeExtractor.java:436) org.apache.flink.streaming.api.datastream.KeyedStream.<init>(KeyedStream.java:108) org.apache.flink.streaming.api.datastream.DataStream.keyBy(DataStream.java:263) org.apache.flink.streaming.examples.wordcount.PojoExample.execute(PojoExample.java:86) org.apache.flink.streaming.examples.wordcount.PojoExample.main(PojoExample.java:108) It sames can't use a class contains the KeySelector ? -- Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/