flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLINK-2909) Gelly Graph Generators
Date Fri, 08 Apr 2016 13:53:25 GMT

    [ https://issues.apache.org/jira/browse/FLINK-2909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15232206#comment-15232206
] 

ASF GitHub Bot commented on FLINK-2909:
---------------------------------------

Github user vasia commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1807#discussion_r59027233
  
    --- Diff: docs/apis/batch/libs/gelly.md ---
    @@ -1734,3 +1734,547 @@ vertex represents a group of vertices and each edge represents
a group of edges
     vertex and edge in the output graph stores the common group value and the number of represented
elements.
     
     {% top %}
    +
    +Graph Generators
    +-----------
    +
    +Gelly provides a collection of scalable graph generators. Each generator is
    +
    +* parallelizable, in order to create large datasets
    +* scale-free, generating the same graph regardless of parallelism
    +* thrifty, using as few operators as possible
    +
    +### Complete Graph
    +
    +An undirected graph connecting every distinct pair of vertices.
    +
    +<div class="codetabs" markdown="1">
    +<div data-lang="java" markdown="1">
    +{% highlight java %}
    +ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    +
    +Graph<LongValue,NullValue,NullValue> graph = new CompleteGraph(env, 5)
    +    .generate();
    +{% endhighlight %}
    +</div>
    +
    +<div data-lang="scala" markdown="1">
    +{% highlight scala %}
    +import org.apache.flink.api.scala._
    +import org.apache.flink.graph.generator.CompleteGraph
    +
    +val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    +
    +val graph = new CompleteGraph(env.getJavaEnv, 5).generate()
    +{% endhighlight %}
    +</div>
    +</div>
    +
    +<svg class="graph" width="540" height="540"
    +    xmlns="http://www.w3.org/2000/svg"
    +    xmlns:xlink="http://www.w3.org/1999/xlink">
    +
    +    <line x1="270" y1="40" x2="489" y2="199" />
    +    <line x1="270" y1="40" x2="405" y2="456" />
    +    <line x1="270" y1="40" x2="135" y2="456" />
    +    <line x1="270" y1="40" x2="51" y2="199" />
    +
    +    <line x1="489" y1="199" x2="405" y2="456" />
    +    <line x1="489" y1="199" x2="135" y2="456" />
    +    <line x1="489" y1="199" x2="51" y2="199" />
    +
    +    <line x1="405" y1="456" x2="135" y2="456" />
    +    <line x1="405" y1="456" x2="51" y2="199" />
    +
    +    <line x1="135" y1="456" x2="51" y2="199" />
    +
    +    <circle cx="270" cy="40" r="20" />
    +    <text x="270" y="40">0</text>
    +
    +    <circle cx="489" cy="199" r="20" />
    +    <text x="489" y="199">1</text>
    +
    +    <circle cx="405" cy="456" r="20" />
    +    <text x="405" y="456">2</text>
    +
    +    <circle cx="135" cy="456" r="20" />
    +    <text x="135" y="456">3</text>
    +
    +    <circle cx="51" cy="199" r="20" />
    +    <text x="51" y="199">4</text>
    +</svg>
    +
    +### Cycle Graph
    +
    +An undirected graph where all edges form a single cycle.
    +
    +<div class="codetabs" markdown="1">
    +<div data-lang="java" markdown="1">
    +{% highlight java %}
    +ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    +
    +Graph<LongValue,NullValue,NullValue> graph = new CycleGraph(env, 5)
    +    .generate();
    +{% endhighlight %}
    +</div>
    +
    +<div data-lang="scala" markdown="1">
    +{% highlight scala %}
    +import org.apache.flink.api.scala._
    +import org.apache.flink.graph.generator.CycleGraph
    +
    +val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    +
    +val graph = new CycleGraph(env.getJavaEnv, 5).generate()
    +{% endhighlight %}
    +</div>
    +</div>
    +
    +<svg class="graph" width="540" height="540"
    +    xmlns="http://www.w3.org/2000/svg"
    +    xmlns:xlink="http://www.w3.org/1999/xlink">
    +
    +    <line x1="270" y1="40" x2="489" y2="199" />
    +    <line x1="489" y1="199" x2="405" y2="456" />
    +    <line x1="405" y1="456" x2="135" y2="456" />
    +    <line x1="135" y1="456" x2="51" y2="199" />
    +    <line x1="51" y1="199" x2="270" y2="40" />
    +
    +    <circle cx="270" cy="40" r="20" />
    +    <text x="270" y="40">0</text>
    +
    +    <circle cx="489" cy="199" r="20" />
    +    <text x="489" y="199">1</text>
    +
    +    <circle cx="405" cy="456" r="20" />
    +    <text x="405" y="456">2</text>
    +
    +    <circle cx="135" cy="456" r="20" />
    +    <text x="135" y="456">3</text>
    +
    +    <circle cx="51" cy="199" r="20" />
    +    <text x="51" y="199">4</text>
    +</svg>
    +
    +### Empty Graph
    +
    +The graph containing no edges.
    +
    +<div class="codetabs" markdown="1">
    +<div data-lang="java" markdown="1">
    +{% highlight java %}
    +ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    +
    +Graph<LongValue,NullValue,NullValue> graph = new EmptyGraph(env, 5)
    +    .generate();
    +{% endhighlight %}
    +</div>
    +
    +<div data-lang="scala" markdown="1">
    +{% highlight scala %}
    +import org.apache.flink.api.scala._
    +import org.apache.flink.graph.generator.EmptyGraph
    +
    +val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    +
    +val graph = new EmptyGraph(env.getJavaEnv, 5).generate()
    +{% endhighlight %}
    +</div>
    +</div>
    +
    +<svg class="graph" width="540" height="80"
    +    xmlns="http://www.w3.org/2000/svg"
    +    xmlns:xlink="http://www.w3.org/1999/xlink">
    +
    +    <circle cx="30" cy="40" r="20" />
    +    <text x="30" y="40">0</text>
    +
    +    <circle cx="150" cy="40" r="20" />
    +    <text x="150" y="40">1</text>
    +
    +    <circle cx="270" cy="40" r="20" />
    +    <text x="270" y="40">2</text>
    +
    +    <circle cx="390" cy="40" r="20" />
    +    <text x="390" y="40">3</text>
    +
    +    <circle cx="510" cy="40" r="20" />
    +    <text x="510" y="40">4</text>
    +</svg>
    +
    +### Grid Graph
    +
    +An undirected graph connecting vertices in a regular tiling in one or more dimensions.
    +
    +<div class="codetabs" markdown="1">
    +<div data-lang="java" markdown="1">
    +{% highlight java %}
    +ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    +
    +Graph<LongValue,NullValue,NullValue> graph = new GridGraph(env)
    +    .addDimension(2, false)
    +    .addDimension(4, false)
    +    .generate();
    +{% endhighlight %}
    +</div>
    +
    +<div data-lang="scala" markdown="1">
    +{% highlight scala %}
    +import org.apache.flink.api.scala._
    +import org.apache.flink.graph.generator.GridGraph
    +
    +val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    +
    +val graph = new GridGraph(env.getJavaEnv).addDimension(2, false).addDimension(4, false).generate()
    +{% endhighlight %}
    +</div>
    +</div>
    +
    +<svg class="graph" width="540" height="200"
    +    xmlns="http://www.w3.org/2000/svg"
    +    xmlns:xlink="http://www.w3.org/1999/xlink">
    +
    +    <line x1="30" y1="40" x2="510" y2="40" />
    +    <line x1="30" y1="160" x2="510" y2="160" />
    +
    +    <line x1="30" y1="40" x2="30" y2="160" />
    +    <line x1="190" y1="40" x2="190" y2="160" />
    +    <line x1="350" y1="40" x2="350" y2="160" />
    +    <line x1="510" y1="40" x2="510" y2="160" />
    +
    +    <circle cx="30" cy="40" r="20" />
    +    <text x="30" y="40">0</text>
    +
    +    <circle cx="190" cy="40" r="20" />
    +    <text x="190" y="40">1</text>
    +
    +    <circle cx="350" cy="40" r="20" />
    +    <text x="350" y="40">2</text>
    +
    +    <circle cx="510" cy="40" r="20" />
    +    <text x="510" y="40">3</text>
    +
    +    <circle cx="30" cy="160" r="20" />
    +    <text x="30" y="160">4</text>
    +
    +    <circle cx="190" cy="160" r="20" />
    +    <text x="190" y="160">5</text>
    +
    +    <circle cx="350" cy="160" r="20" />
    +    <text x="350" y="160">6</text>
    +
    +    <circle cx="510" cy="160" r="20" />
    +    <text x="510" y="160">7</text>
    +</svg>
    +
    +### Hypercube Graph
    +
    +An undirected graph where edges form an n-dimensional hypercube.
    +
    +<div class="codetabs" markdown="1">
    +<div data-lang="java" markdown="1">
    +{% highlight java %}
    +ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    +
    +Graph<LongValue,NullValue,NullValue> graph = new HypercubeGraph(env, 2)
    +    .generate();
    +{% endhighlight %}
    +</div>
    +
    +<div data-lang="scala" markdown="1">
    +{% highlight scala %}
    +import org.apache.flink.api.scala._
    +import org.apache.flink.graph.generator.HypercubeGraph
    +
    +val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    +
    +// note: configured with the number of vertex pairs
    +val graph = new HypercubeGraph(env.getJavaEnv, 4).generate()
    +{% endhighlight %}
    +</div>
    +</div>
    +
    +<svg class="graph" width="540" height="320"
    +    xmlns="http://www.w3.org/2000/svg"
    +    xmlns:xlink="http://www.w3.org/1999/xlink">
    +
    +    <line x1="190" y1="120" x2="350" y2="120" />
    +    <line x1="190" y1="200" x2="350" y2="200" />
    +    <line x1="190" y1="120" x2="190" y2="200" />
    +    <line x1="350" y1="120" x2="350" y2="200" />
    +
    +    <line x1="30" y1="40" x2="510" y2="40" />
    +    <line x1="30" y1="280" x2="510" y2="280" />
    +    <line x1="30" y1="40" x2="30" y2="280" />
    +    <line x1="510" y1="40" x2="510" y2="280" />
    +
    +    <line x1="190" y1="120" x2="30" y2="40" />
    +    <line x1="350" y1="120" x2="510" y2="40" />
    +    <line x1="190" y1="200" x2="30" y2="280" />
    +    <line x1="350" y1="200" x2="510" y2="280" />
    +
    +    <circle cx="190" cy="120" r="20" />
    +    <text x="190" y="120">0</text>
    +
    +    <circle cx="350" cy="120" r="20" />
    +    <text x="350" y="120">1</text>
    +
    +    <circle cx="190" cy="200" r="20" />
    +    <text x="190" y="200">2</text>
    +
    +    <circle cx="350" cy="200" r="20" />
    +    <text x="350" y="200">3</text>
    +
    +    <circle cx="30" cy="40" r="20" />
    +    <text x="30" y="40">4</text>
    +
    +    <circle cx="510" cy="40" r="20" />
    +    <text x="510" y="40">5</text>
    +
    +    <circle cx="30" cy="280" r="20" />
    +    <text x="30" y="280">6</text>
    +
    +    <circle cx="510" cy="280" r="20" />
    +    <text x="510" y="280">7</text>
    +</svg>
    +
    +### Path Graph
    +
    +An undirected Graph where all edges form a single path.
    +
    +<div class="codetabs" markdown="1">
    +<div data-lang="java" markdown="1">
    +{% highlight java %}
    +ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    +
    +Graph<LongValue,NullValue,NullValue> graph = new PathGraph(env, 5)
    +    .generate();
    +{% endhighlight %}
    +</div>
    +
    +<div data-lang="scala" markdown="1">
    +{% highlight scala %}
    +import org.apache.flink.api.scala._
    +import org.apache.flink.graph.generator.PathGraph
    +
    +val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
    +
    +val graph = new PathGraph(env.getJavaEnv, 5).generate()
    +{% endhighlight %}
    +</div>
    +</div>
    +
    +<svg class="graph" width="540" height="80"
    +    xmlns="http://www.w3.org/2000/svg"
    +    xmlns:xlink="http://www.w3.org/1999/xlink">
    +
    +    <line x1="30" y1="40" x2="510" y2="40" />
    +
    +    <circle cx="30" cy="40" r="20" />
    +    <text x="30" y="40">0</text>
    +
    +    <circle cx="150" cy="40" r="20" />
    +    <text x="150" y="40">1</text>
    +
    +    <circle cx="270" cy="40" r="20" />
    +    <text x="270" y="40">2</text>
    +
    +    <circle cx="390" cy="40" r="20" />
    +    <text x="390" y="40">3</text>
    +
    +    <circle cx="510" cy="40" r="20" />
    +    <text x="510" y="40">4</text>
    +</svg>
    +
    +### RMat Graph
    +
    +A directed or undirected power-law graph generated using the [Recursive Matrix (R-Mat)]
    +(http://www.cs.cmu.edu/~christos/PUBLICATIONS/siam04.pdf) model. RMat is a stochastic
    --- End diff --
    
    This is not converted into a link in the docs.


> Gelly Graph Generators
> ----------------------
>
>                 Key: FLINK-2909
>                 URL: https://issues.apache.org/jira/browse/FLINK-2909
>             Project: Flink
>          Issue Type: New Feature
>          Components: Gelly
>    Affects Versions: 1.0.0
>            Reporter: Greg Hogan
>            Assignee: Greg Hogan
>
> Include a selection of graph generators in Gelly. Generated graphs will be useful for
performing scalability, stress, and regression testing as well as benchmarking and comparing
algorithms, for both Flink users and developers. Generated data is infinitely scalable yet
described by a few simple parameters and can often substitute for user data or sharing large
files when reporting issues.
> There are at multiple categories of graphs as documented by [NetworkX|https://networkx.github.io/documentation/latest/reference/generators.html]
and elsewhere.
> Graphs may be a well-defined, i.e. the [Chvátal graph|https://en.wikipedia.org/wiki/Chv%C3%A1tal_graph].
These may be sufficiently small to populate locally.
> Graphs may be scalable, i.e. complete and star graphs. These should use Flink's distributed
parallelism.
> Graphs may be stochastic, i.e. [RMat graphs|http://snap.stanford.edu/class/cs224w-readings/chakrabarti04rmat.pdf]
. A key consideration is that the graphs should source randomness from a seedable PRNG and
generate the same Graph regardless of parallelism.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message