[
https://issues.apache.org/jira/browse/FLINK-2557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14738740#comment-14738740
]
ASF GitHub Bot commented on FLINK-2557:
---------------------------------------
Github user zentol commented on the pull request:
https://github.com/apache/flink/pull/1045#issuecomment-139234472
@fhueske well I'm still waiting for an answer as to how to proceed. Either
return a MissingTypeInfo or throw some checked Exception when the type could
not be determined. This is just a choice of style; both solutions require a
pass over (probably) all calls to type extractor methods.
It might also be a good idea to separate the original fix (in the first
commit) from the exception stuff. The fix did not fail any tests and resolved
the issue, while the rest is essentially a refactoring.
> 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.
> The issue has been reported here:
> http://stackoverflow.com/questions/32122495/stuck-with-type-hints-in-clojure-for-generic-class
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)