Hi Vasiliki,

your error is a very common problem we have together with types. The problem is that Java does type erasure, which means that

return vertices.map(new ApplyMapperToVertex<K, VV>(mapper));

becomes

return vertices.map(new ApplyMapperToVertex(mapper));

Therefore we don't have the types. But since we have "implements MapFunction<Tuple2<K, VV>, Tuple2<K, VV>>" the type extractor infers the output through the input (which is always known).

The return type must be provided manually e.g. by implementing the interface ResultTypeQueryable or by the a new API operator (see my last mailing list mail).

Regards,
Timo


On 30.10.2014 11:59, Vasiliki Kalavri wrote:
Hi all,

one of the operations we want to implement for the flink graph api is
mapVertices, i.e. applying a mapper to the vertices of the graph.
The current implementation assumes that the vertex value type remains the
same:
https://github.com/project-flink/flink-graph/blob/master/src/main/java/flink/graphs/Graph.java
.
However, we would like to be able to change the vertex value type. When
trying this out, we got this error:

Type of TypeVariable 'NV' in 'class flink.graphs.Graph$ApplyMapperToVertex'
could not be determined. This is most likely a type erasure problem. The
type extraction currently supports types with generic variables only in
cases where all variables in the return type can be deduced from the input
type(s).

How could we solve this and support changing the vertex value type?
Thank you!

Cheers,
Vasia.


Reply via email to