You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Stephan Ewen (JIRA)" <ji...@apache.org> on 2015/09/18 13:54:04 UTC
[jira] [Closed] (FLINK-2557) Manual type information via "returns"
fails in DataSet API
[ https://issues.apache.org/jira/browse/FLINK-2557?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephan Ewen closed FLINK-2557.
-------------------------------
> 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
> Fix For: 0.10
>
>
> 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)