[
https://issues.apache.org/jira/browse/FLINK-1815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15384687#comment-15384687
]
Faye Beligianni commented on FLINK-1815:
----------------------------------------
Hi,
I find the idea of storing graphs as adjacency lists very interesting, as for
me representing a graph in an adjacency list format is a bit more intuitive
than having different datasets for edges and vertices. That will make it also
easier to read and write the adjacency list file.
Regarding the {{Graph.writeAsCSV}} wrapper it should create two CSV files; one
for the edges dataset and one for the vertices dataset and to be honest I
thought that this functionality already existed :)
I agree that the {{GraphAdjacencyListReader.fromString}} solution is not
future-proof, but I could not find any better solution for simple text files,
which was the requirement one year back when this ticket opened. Using
{{CSVInputFormat}} and {{FieldParser}}, will be more stable indeed.
I suppose a new class e.g. {{AdjacencyCSVInputFormat}} (like
{{TupleCSVInputFormat}} class) should be created. The only issue that I see now
is that for reading an adjacency list formatted CSV file, there should be more
than two delimiters:
* line_delimiter
* source_vertex-neighbors_delimiter
* vertexId-vertexValue_delimiter
* neighbors_delimiter
> Add methods to read and write a Graph as adjacency list
> -------------------------------------------------------
>
> Key: FLINK-1815
> URL: https://issues.apache.org/jira/browse/FLINK-1815
> Project: Flink
> Issue Type: New Feature
> Components: Gelly
> Affects Versions: 0.9
> Reporter: Vasia Kalavri
> Assignee: Faye Beligianni
> Priority: Minor
>
> It would be nice to add utility methods to read a graph from an Adjacency
> list format and also write a graph in such a format.
> The simple case would be to read a graph with no vertex or edge values, where
> we would need to define (a) a line delimiter, (b) a delimiter to separate
> vertices from neighbor list and (c) and a delimiter to separate the neighbors.
> For example, "1 2,3,4\n2 1,3" would give vertex 1 with neighbors 2, 3 and 4
> and vertex 2 with neighbors 1 and 3.
> If we have vertex values and/or edge values, we also need to have a way to
> separate IDs from values. For example, we could have "1 0.1 2 0.5, 3 0.2" to
> define a vertex 1 with value 0.1, edge (1, 2) with weight 0.5 and edge (1, 3)
> with weight 0.2.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)