[
https://issues.apache.org/jira/browse/FLINK-3036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15010611#comment-15010611
]
ASF GitHub Bot commented on FLINK-3036:
---------------------------------------
Github user tillrohrmann commented on the pull request:
https://github.com/apache/flink/pull/1370#issuecomment-157657885
@vasia, I can take care of merging both PRs. The overlapping parts don't
seem to be too difficult to resolve.
Will update the gelly guide before merging.
> Gelly's Graph.fromCsvReader method returns wrongly parameterized Graph
> ----------------------------------------------------------------------
>
> Key: FLINK-3036
> URL: https://issues.apache.org/jira/browse/FLINK-3036
> Project: Flink
> Issue Type: Bug
> Components: Gelly
> Affects Versions: 0.10.0
> Reporter: Till Rohrmann
> Assignee: Till Rohrmann
>
> The Scala method {{Graph.fromCsvReader}} of Gelly returns a wrongly typed
> {{Graph}} instance. The problem is that no return type has been explicitly
> defined for the method. Additionally, the method returns fundamentally
> incompatible types depending on the given parameters. So for example, the
> method can return a {{Graph[Long, Long, Long]}} if a vertex and edge file is
> specified (in this case with value type {{Long}}). If the vertex file is not
> specified and neither a vertex value initializer, then the return type is
> {{Graph[Long, NullValue, Long]}}. Since {{NullValue}} and {{Long}} have
> nothing in common, Scala's type inference infers that the {{fromCsvReader}}
> method must have a return type {{Graph[Long, t >: Long with NullValue,
> Long]}} with {{t}} being a supertype of {{Long with NullValue}}. This type is
> not useful at all, since there is no such type. As a consequence, the user
> has to cast the resulting {{Graph}} to have either the type {{Graph[Long,
> NullValue, Long]}} or {{Graph[Long, Long, Long]}} if he wants to do something
> more elaborate than just collecting the edges for example.
> This can be especially confusing because one usually writes something like
> {code}
> val graph = Graph.fromCsvReader[Long, Double, Double](...)
> graph.run(new PageRank(...))
> {code}
> and does not see that the type of {{graph}} is {{Graph[Long, t >: Double with
> NullValue, u >: Double with NullValue}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)