图算法

译者:flink.sojb.cn

Graph用于组装API和顶级算法的逻辑块可在Gelly中作为org.apache.flink.graph.asm包中的图形算法访问。这些算法通过配置参数提供优化和调整,并且在使用类似配置处理相同输入时可以提供隐式运行时重用。


算法:degree.annotate.directed。VertexInDegree

描述:使用in-degree 注释有向图的顶点。

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

可选配置:

  • setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出度为零的顶点

  • setParallelism:覆盖 算子并行度


算法:degree.annotate.directed。VertexOutDegree

描述:使用out-degree 注释有向图的顶点。

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

可选配置:

  • setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出out-degree为零的顶点

  • setParallelism:覆盖 算子并行度


算法:degree.annotate.directed。VertexDegrees

描述:使用degree,out-degree和in-degree 注释有向图的顶点。

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

可选配置:

  • setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出out-and-degree为零的顶点

  • setParallelism:覆盖 算子并行度


算法:degree.annotate.directed。EdgeSourceDegrees

描述:使用源ID的度,出度和度数来标注有向图的边。

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

可选配置:

  • setParallelism:覆盖 算子并行度

算法:degree.annotate.directed。EdgeTargetDegrees

描述:使用目标ID的度,出度和度数来标注有向图的边。

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

可选配置:

  • setParallelism:覆盖 算子并行度

算法:degree.annotate.directed。EdgeDegreesPair

描述:使用源顶点和目标顶点的度,出度和度数来标注有向图的边。

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

可选配置:

  • setParallelism:覆盖 算子并行度

算法:degree.annotate.undirected。VertexDegree

描述:用度数注释无向图的顶点。

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

可选配置:

  • setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出度数为零的顶点

  • setParallelism:覆盖 算子并行度

  • setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。


算法:degree.annotate.undirected。EdgeSourceDegree

描述:使用源ID的度数注释无向图的边。

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

可选配置:

  • setParallelism:覆盖 算子并行度

  • setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。


算法:degree.annotate.undirected。EdgeTargetDegree

描述:使用目标ID的度数注释无向图的边。

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

可选配置:

  • setParallelism:覆盖 算子并行度

  • setReduceOnSourceId:可以从边缘源ID或目标ID计算度。默认情况下,计算目标ID。如果输入边缘列表按源ID排序,则Reduce源ID可以优化算法。


算法:degree.annotate.undirected。EdgeDegreePair

描述:使用源顶点和目标顶点的度数注释无向图的边。

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

可选配置:

  • setParallelism:覆盖 算子并行度

  • setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。


算法:degree.filter.undirected。MaximumDegree

描述:按最大程度Filter无向图

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

可选配置:

  • setBroadcastHighDegreeVertices:使用广播哈希连接高度顶点,以在删除相对较少数量的高度顶点时Reduce数据混洗。

  • setParallelism:覆盖 算子并行度

  • setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。


算法:simple.directed。简化

描述:从有向图中删除自循环和重复边。

  1. graph.run(new Simplify());

可选配置:

  • setParallelism:覆盖 算子并行度

算法:simple.undirected。简化

描述:添加对称边并从无向图中移除自循环和复制边。

  1. graph.run(new Simplify());

可选配置:

  • setParallelism:覆盖 算子并行度

算法:翻译。TranslateGraphIds

描述:使用给定的转换顶点和边ID TranslateFunction

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

所需配置:

  • 翻译器:实现类型或值转换

可选配置:

  • setParallelism:覆盖 算子并行度

算法:翻译。TranslateVertexValues

描述:使用给定的转换顶点值TranslateFunction

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

所需配置:

  • 翻译器:实现类型或值转换

可选配置:

  • setParallelism:覆盖 算子并行度

算法:翻译。TranslateEdgeValues

描述:使用给定的转换边缘值TranslateFunction

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

所需配置:

  • 翻译器:实现类型或值转换

可选配置:

  • setParallelism:覆盖 算子并行度