グラフ アルゴリズム

Graph API とトップレベルのアルゴリズムが組み合わされたロジックブロックはGelly内で org.apache.flink.graph.asmパッケージ内のグラフアルゴリズムとしてアクセスできます。これらのアルゴリズムは最適化および設定パラメータによる調整を提供し、同じ設定を使って同じ入力を処理する時に暗黙的なランタイムの再利用を提供するかもしれません。

アルゴリズム 解説
degree.annotate.directed.
VertexInDegree

入次数を持つ有向グラフの頂点に注釈をつけます。

DataSet<Vertex<K, LongValue>> inDegree = graph
  .run(new VertexInDegree()
    .setIncludeZeroDegreeVertices(true));

任意の設定:

  • setIncludeZeroDegreeVertices: デフォルトでは、辺のセットだけが次数の計算のために処理されます; このフラグが設定された場合、入次数0の頂点を出力するために頂点のセットに対して追加のjoinが行われます

  • setParallelism: オペレータの並行度を上書きする

degree.annotate.directed.
VertexOutDegree

出次数を持つ有向グラフの頂点に注釈をつけます。

DataSet<Vertex<K, LongValue>> outDegree = graph
  .run(new VertexOutDegree()
    .setIncludeZeroDegreeVertices(true));

任意の設定:

  • setIncludeZeroDegreeVertices: デフォルトでは、辺のセットだけが次数の計算のために処理されます; このフラグが設定された場合、出次数0の頂点を出力するために頂点のセットに対して追加のjoinが行われます

  • setParallelism: オペレータの並行度を上書きする

degree.annotate.directed.
VertexDegrees

次数、出次数、入次数を持つ有向グラフ の頂点に注釈を付けます。

DataSet<Vertex<K, Tuple2<LongValue, LongValue>>> degrees = graph
  .run(new VertexDegrees()
    .setIncludeZeroDegreeVertices(true));

任意の設定:

  • setIncludeZeroDegreeVertices: デフォルトでは、辺のセットだけが次数の計算のために処理されます; このフラグが設定された場合、出次数と入次数が0の頂点を出力するために頂点のセットに対して追加のjoinが行われます

  • setParallelism: オペレータの並行度を上書きする

degree.annotate.directed.
EdgeSourceDegrees

始点IDの次数、出次数、入次数を持つ有向グラフ の辺に注釈を付けます。

DataSet<Edge<K, Tuple2<EV, Degrees>>> sourceDegrees = graph
  .run(new EdgeSourceDegrees());

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

degree.annotate.directed.
EdgeTargetDegrees

終点IDの次数、出次数、入次数を持つ有向グラフ の辺に注釈を付けます。

DataSet<Edge<K, Tuple2<EV, Degrees>>> targetDegrees = graph
  .run(new EdgeTargetDegrees();

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

degree.annotate.directed.
EdgeDegreesPair

始点と終点の次数、出次数、入次数を持つ有向グラフ の辺に注釈を付けます。

DataSet<Edge<K, Tuple2<EV, Degrees>>> degrees = graph
  .run(new EdgeDegreesPair());

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

degree.annotate.undirected.
VertexDegree

次数を持つ無向グラフの頂点に注釈を付けます。

DataSet<Vertex<K, LongValue>> degree = graph
  .run(new VertexDegree()
    .setIncludeZeroDegreeVertices(true)
    .setReduceOnTargetId(true));

任意の設定:

  • setIncludeZeroDegreeVertices: デフォルトでは、辺のセットだけが次数の計算のために処理されます; このフラグが設定された場合、次数0の頂点を出力するために頂点のセットに対して追加のjoinが行われます

  • setParallelism: オペレータの並行度を上書きする

  • setReduceOnTargetId: 次数は辺の始点あるいは終点IDのどちらかから重要と見なすことができます。デフォルトでは始点が重要と見なされます。入力辺のリストが終点IDでソートされている場合、終点IDの削減はアルゴリズムを最適化するかもしれません。

degree.annotate.undirected.
EdgeSourceDegree

始点IDの次数を持つ無向グラフの辺に注釈を付けます。

DataSet<Edge<K, Tuple2<EV, LongValue>>> sourceDegree = graph
  .run(new EdgeSourceDegree()
    .setReduceOnTargetId(true));

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

  • setReduceOnTargetId: 次数は辺の始点あるいは終点IDのどちらかから重要と見なすことができます。デフォルトでは始点が重要と見なされます。入力辺のリストが終点IDでソートされている場合、終点IDの削減はアルゴリズムを最適化するかもしれません。

degree.annotate.undirected.
EdgeTargetDegree

終点IDの次数を持つ無向グラフの辺に注釈を付けます。

DataSet<Edge<K, Tuple2<EV, LongValue>>> targetDegree = graph
  .run(new EdgeTargetDegree()
    .setReduceOnSourceId(true));

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

  • setReduceOnSourceId: 次数は辺の始点あるいは終点IDのどちらかから重要と見なすことできます。デフォルトでは終点IDが重要と見なされます。入力辺のリストが始点IDでソートされている場合、終点IDの削減はアルゴリズムを最適化するかもしれません。

degree.annotate.undirected.
EdgeDegreePair

始点および終点の両方の次数を持つ無向グラフの辺に注釈を付けます。

DataSet<Edge<K, Tuple3<EV, LongValue, LongValue>>> pairDegree = graph
  .run(new EdgeDegreePair()
    .setReduceOnTargetId(true));

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

  • setReduceOnTargetId: 次数は辺の始点あるいは終点IDのどちらかから重要と見なすことができます。デフォルトでは始点が重要と見なされます。入力辺のリストが終点IDでソートされている場合、終点IDの削減はアルゴリズムを最適化するかもしれません。

degree.filter.undirected.
MaximumDegree

最大の次数によって無向グラフをフィルターします。

Graph<K, VV, EV> filteredGraph = graph
  .run(new MaximumDegree(5000)
    .setBroadcastHighDegreeVertices(true)
    .setReduceOnTargetId(true));

任意の設定:

  • setBroadcastHighDegreeVertices: join high-degree vertices using a broadcast-hash to reduce data shuffling when removing a relatively small number of high-degree vertices.

  • setParallelism: オペレータの並行度を上書きする

  • setReduceOnTargetId: 次数は辺の始点あるいは終点IDのどちらかから重要と見なすことができます。デフォルトでは始点が重要と見なされます。入力辺のリストが終点IDでソートされている場合、終点IDの削減はアルゴリズムを最適化するかもしれません。

simple.directed.
Simplify

有向グラフから自己閉路および重複辺を削除します。

graph.run(new Simplify());

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

simple.undirected.
Simplify

対称辺を追加し、無向グラフから自己閉路および重複辺を削除します。

graph.run(new Simplify());

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

translate.
TranslateGraphIds

指定されたTranslateFunctionを使って頂点と辺のIDを変換します。

graph.run(new TranslateGraphIds(new LongValueToStringValue()));

必須条件:

  • translator: 型あるいは値の変換を実装します

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

translate.
TranslateVertexValues

指定されたTranslateFunctionを使って頂点の値を変換します。

graph.run(new TranslateVertexValues(new LongValueAddOffset(vertexCount)));

必須条件:

  • translator: 型あるいは値の変換を実装します

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

translate.
TranslateEdgeValues

指定されたTranslateFunctionを使って辺の値を変換します。

graph.run(new TranslateEdgeValues(new Nullify()));

必須条件:

  • translator: 型あるいは値の変換を実装します

任意の設定:

  • setParallelism: オペレータの並行度を上書きする

上に戻る

TOP
inserted by FC2 system