[
https://issues.apache.org/jira/browse/FLINK-3563?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15177584#comment-15177584
]
Aljoscha Krettek commented on FLINK-3563:
-----------------------------------------
No, this is some code [~chobeat] sent to the mailing list:
It's not the same as above but might be the same problem. If the {{returns()}}
is removed it will fail at runtime:
{code}
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(2);
Map<String, Object> inputMap = new HashMap<>();
inputMap.put("sepal_width",2.0);
inputMap.put("sepal_length",2.0);
inputMap.put("petal_width",2.0);
inputMap.put("petal_length",2.0);
MapFunction<Map<String, Object>, Map<String, Object>> operator=new
MapFunction<Map<String, Object>,Map<String, Object>>(){
@Override
public Map<String, Object> map(Map<String, Object> stringObjectMap) throws
Exception {
return stringObjectMap;
}
};
List<Map<String, Object>> input = new LinkedList<>();
input.add(inputMap);
DataSource<Map<String, Object>> dataset = env.fromCollection(input);
List<java.util.Map<String, Object>> collectedResult = dataset
.map(operator)
.returns(new TypeHint<Map<String, Object>>(){})
.collect();
System.out.println("Results: " + collectedResult);
{code}
> .returns() doesn't compile when using .map() with a custom MapFunction
> ----------------------------------------------------------------------
>
> Key: FLINK-3563
> URL: https://issues.apache.org/jira/browse/FLINK-3563
> Project: Flink
> Issue Type: Bug
> Components: Type Serialization System
> Affects Versions: 0.10.1
> Reporter: Simone Robutti
> Priority: Minor
>
> Defined a DummyMapFunction that goes from a java Map to another java Map like
> this:
> {code:title=DummyMapFunction.scalaborderStyle=solid}
> class DummyMapFunction() extends MapFunction[java.util.Map[String, Any],
> java.util.Map[FieldName, Any]] {
> override def map(input: java.util.Map[String, Any]):
> java.util.Map[FieldName, Any] = {
> val result: java.util.Map[FieldName, Any] = new
> java.util.HashMap[FieldName, Any]()
> result
> }
> }
> {code}
> and trying to use it with a map:
> {code:title=Main.java}
> DummyMapFunction operator = new DummyMapFunction();
> DataSource<Map<String, Object>> dataset = env.fromCollection(input);
> List<java.util.Map<FieldName, Object>> collectedResult =
> dataset.map(operator).returns(java.util.Map.class).collect();
> {code}
> the returns call doesn't compile because it can't resolve the returns method
> with the parameter.
> But if insted of creating a variable of type DummyMapFunction I create a
> {code}
> MapFunction operator=new DummyMapFuction();
> {code}
> or I explicitly cast the variable to a MapFunction, it compiles and work
> flawlessly.
> This is a trick that works but I think is an unexpected behaviour.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)