Posted by
yunfan123 on
URL: http://deprecated-apache-flink-user-mailing-list-archive.369.s1.nabble.com/Keyed-function-type-erasure-problem-tp15520.html
Just small change from PojoExample:
My problem is why the class like SelectorContainer can't as keyed function in flink
Full code please look up 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/