[
https://issues.apache.org/jira/browse/FLINK-2909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15232201#comment-15232201
]
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_r59027023
--- 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
+generator configured with a source of randomness.
--- End diff --
Can we add a note about the default parameters?
> 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)