[ https://issues.apache.org/jira/browse/FLINK-2557?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias J. Sax updated FLINK-2557: ----------------------------------- Description: I changed the WordCount example as below and get an exception: Tokenizer is change to this (removed generics and added cast to String): {code:java} public static final class Tokenizer implements FlatMapFunction { public void flatMap(Object value, Collector out) { String[] tokens = ((String) value).toLowerCase().split("\\W+"); for (String token : tokens) { if (token.length() > 0) { out.collect(new Tuple2<String, Integer>(token, 1)); } } } } {code} I added call to "returns(....)" here: {code:java} DataSet<Tuple2<String, Integer>> counts = text.flatMap(new Tokenizer()).returns("Tuple2<String,Integer>") .groupBy(0).sum(1); {code} The exception is: {noformat} Exception in thread "main" java.lang.IllegalArgumentException: The types of the interface org.apache.flink.api.common.functions.FlatMapFunction could not be inferred. Support for synthetic interfaces, lambdas, and generic types is limited at this point. at org.apache.flink.api.java.typeutils.TypeExtractor.getParameterType(TypeExtractor.java:686) at org.apache.flink.api.java.typeutils.TypeExtractor.getParameterTypeFromGenericType(TypeExtractor.java:710) at org.apache.flink.api.java.typeutils.TypeExtractor.getParameterType(TypeExtractor.java:673) at org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:365) at org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:279) at org.apache.flink.api.java.typeutils.TypeExtractor.getFlatMapReturnTypes(TypeExtractor.java:120) at org.apache.flink.api.java.DataSet.flatMap(DataSet.java:262) at org.apache.flink.examples.java.wordcount.WordCount.main(WordCount.java:69) {noformat} Fix: This should not immediately fail, but also only give a "MissingTypeInfo" so that type hints would work. The error message is also wrong, btw: It should state that raw types are not supported. was: I changed the WordCount example as below and get an exception: Tokenizer is change to this (removed generics and added cast to String): {code:java} public static final class Tokenizer implements FlatMapFunction { public void flatMap(Object value, Collector out) { String[] tokens = ((String) value).toLowerCase().split("\\W+"); for (String token : tokens) { if (token.length() > 0) { out.collect(new Tuple2<String, Integer>(token, 1)); } } } } {code} I added call to "returns(....)" here: {code:java} DataSet<Tuple2<String, Integer>> counts = text.flatMap(new Tokenizer()).returns("Tuple2<String,Integer>") .groupBy(0).sum(1); {code} The exception is: {noformat} Exception in thread "main" java.lang.IllegalArgumentException: The types of the interface org.apache.flink.api.common.functions.FlatMapFunction could not be inferred. Support for synthetic interfaces, lambdas, and generic types is limited at this point. at org.apache.flink.api.java.typeutils.TypeExtractor.getParameterType(TypeExtractor.java:686) at org.apache.flink.api.java.typeutils.TypeExtractor.getParameterTypeFromGenericType(TypeExtractor.java:710) at org.apache.flink.api.java.typeutils.TypeExtractor.getParameterType(TypeExtractor.java:673) at org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:365) at org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:279) at org.apache.flink.api.java.typeutils.TypeExtractor.getFlatMapReturnTypes(TypeExtractor.java:120) at org.apache.flink.api.java.DataSet.flatMap(DataSet.java:262) at org.apache.flink.examples.java.wordcount.WordCount.main(WordCount.java:69) {noformat} Fix: This should not immediately fail, but also only give a "MissingTypeInfo" so that type hints would work. The error message is also wrong, btw: It should state that raw types are not supported. > Manual type information via "returns" fails in DataSet API > ---------------------------------------------------------- > > Key: FLINK-2557 > URL: https://issues.apache.org/jira/browse/FLINK-2557 > Project: Flink > Issue Type: Bug > Components: Java API > Reporter: Matthias J. Sax > > I changed the WordCount example as below and get an exception: > Tokenizer is change to this (removed generics and added cast to String): > {code:java} > public static final class Tokenizer implements FlatMapFunction { > public void flatMap(Object value, Collector out) { > String[] tokens = ((String) value).toLowerCase().split("\\W+"); > for (String token : tokens) { > if (token.length() > 0) { > out.collect(new Tuple2<String, Integer>(token, > 1)); > } > } > } > } > {code} > I added call to "returns(....)" here: > {code:java} > DataSet<Tuple2<String, Integer>> counts = > text.flatMap(new Tokenizer()).returns("Tuple2<String,Integer>") > .groupBy(0).sum(1); > {code} > The exception is: > {noformat} > Exception in thread "main" java.lang.IllegalArgumentException: The types of > the interface org.apache.flink.api.common.functions.FlatMapFunction could not > be inferred. Support for synthetic interfaces, lambdas, and generic types is > limited at this point. > at > org.apache.flink.api.java.typeutils.TypeExtractor.getParameterType(TypeExtractor.java:686) > at > org.apache.flink.api.java.typeutils.TypeExtractor.getParameterTypeFromGenericType(TypeExtractor.java:710) > at > org.apache.flink.api.java.typeutils.TypeExtractor.getParameterType(TypeExtractor.java:673) > at > org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:365) > at > org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:279) > at > org.apache.flink.api.java.typeutils.TypeExtractor.getFlatMapReturnTypes(TypeExtractor.java:120) > at org.apache.flink.api.java.DataSet.flatMap(DataSet.java:262) > at > org.apache.flink.examples.java.wordcount.WordCount.main(WordCount.java:69) > {noformat} > Fix: > This should not immediately fail, but also only give a "MissingTypeInfo" so > that type hints would work. > The error message is also wrong, btw: It should state that raw types are not > supported. -- This message was sent by Atlassian JIRA (v6.3.4#6332)