[
https://issues.apache.org/jira/browse/FLINK-7010?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dawid Wysakowicz resolved FLINK-7010.
-------------------------------------
Resolution: Not A Problem
> Lamdba expression in flatMap throws InvalidTypesException in DataSet
> --------------------------------------------------------------------
>
> Key: FLINK-7010
> URL: https://issues.apache.org/jira/browse/FLINK-7010
> Project: Flink
> Issue Type: Bug
> Reporter: Fang Yong
>
> When I create an example and use lambda in flatMap as follows
> {noformat}
> ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
> DataSet<String> source = env.fromCollection(
> Lists.newArrayList("hello", "flink", "test", "flat", "map",
> "lambda"));
> DataSet<Tuple2<Integer, String>> tupled = source.flatMap((word, out) -> {
> int length = word.length();
> out.collect(Tuple2.of(length, word));
> });
> try {
> tupled.print();
> } catch (Exception e) {
> throw new RuntimeException(e);
> }
> {noformat}
> InvalidTypesException was throwed and the exception stack is as follows:
> {noformat}
> Caused by: org.apache.flink.api.common.functions.InvalidTypesException: The
> return type of function 'testFlatMap(FlatMapTest.java:20)' could not be
> determined automatically, due to type erasure. You can give type information
> hints by using the returns(...) method on the result of the transformation
> call, or by letting your function implement the 'ResultTypeQueryable'
> interface.
> at org.apache.flink.api.java.DataSet.getType(DataSet.java:178)
> at org.apache.flink.api.java.DataSet.collect(DataSet.java:407)
> at org.apache.flink.api.java.DataSet.print(DataSet.java:1605)
> Caused by: org.apache.flink.api.common.functions.InvalidTypesException: The
> generic type parameters of 'Collector' are missing.
> It seems that your compiler has not stored them into the .class file.
> Currently, only the Eclipse JDT compiler preserves the type information
> necessary to use the lambdas feature type-safely.
> See the documentation for more information about how to compile jobs
> containing lambda expressions.
> at
> org.apache.flink.api.java.typeutils.TypeExtractor.validateLambdaGenericParameter(TypeExtractor.java:1653)
> at
> org.apache.flink.api.java.typeutils.TypeExtractor.validateLambdaGenericParameters(TypeExtractor.java:1639)
> at
> org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:573)
> at
> org.apache.flink.api.java.typeutils.TypeExtractor.getFlatMapReturnTypes(TypeExtractor.java:188)
> at org.apache.flink.api.java.DataSet.flatMap(DataSet.java:266)
> {noformat}
> The 20th line code is
> {noformat}
> DataSet<Tuple2<Integer, String>> tupled = source.flatMap((word, out) -> {
> {noformat}
> When I use FlatMapFunction instead of lambda, it will be all right
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)