[ 
https://issues.apache.org/jira/browse/FLINK-2557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14708460#comment-14708460
 ] 

Chesnay Schepler commented on FLINK-2557:
-----------------------------------------

I have a fix ready so that a MissingTypeInfo is returned, but am unsure about 
the error message. Should raw types just be added to the list of unsupported 
things, like "Support for synthetic interfaces, lambdas, and generic or raw 
types is limited at this point"?

> 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
>            Assignee: Chesnay Schepler
>
> 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)

Reply via email to