PJ Van Aeken created FLINK-2033:
-----------------------------------
Summary: Add overloaded methods with explicit TypeInformation
parameters to Gelly
Key: FLINK-2033
URL: https://issues.apache.org/jira/browse/FLINK-2033
Project: Flink
Issue Type: Task
Components: Gelly
Affects Versions: 0.9
Reporter: PJ Van Aeken
For the implementation of the Scala API for Gelly (FLINK-1962), we need to pass
explicit TypeInformation since the Java TypeExtractor does not work for all
Scala Types (see FLINK-2023).
To do this, the java Gelly API needs to be expanded with methods that allow for
explicit passing of TypeInformation.
An example with mapVertices:
{code}
public <NV> Graph<K, NV, EV> mapVertices(final MapFunction<Vertex<K, VV>, NV>
mapper) {
TypeInformation<K> keyType = ((TupleTypeInfo<?>)
vertices.getType()).getTypeAt(0);
String callLocation = Utils.getCallLocationName();
TypeInformation<NV> valueType = TypeExtractor.getMapReturnTypes(mapper,
vertices.getType(), callLocation, false);
TypeInformation<Vertex<K, NV>> returnType = (TypeInformation<Vertex<K,
NV>>) new TupleTypeInfo(
Vertex.class, keyType, valueType);
return mapVertices(mapper,returnType);
}
public <NV> Graph<K, NV, EV> mapVertices(final MapFunction<Vertex<K, VV>,
NV> mapper, TypeInformation<Vertex<K, NV>> returnType) {
DataSet<Vertex<K, NV>> mappedVertices = vertices.map(
new MapFunction<Vertex<K, VV>, Vertex<K, NV>>() {
public Vertex<K, NV> map(Vertex<K, VV> value) throws
Exception {
return new Vertex<K, NV>(value.f0, mapper.map(value));
}
}).returns(returnType);
return new Graph<K, NV, EV>(mappedVertices, this.edges, this.context);
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)