[ 
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)

Reply via email to