图算法

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

算法描述
degree.annotate.directed。VertexInDegree使用in-degree 注释有向图的顶点
  1. DataSet<Vertex<K, LongValue>> inDegree = graph .run(new VertexInDegree() .setIncludeZeroDegreeVertices(true));
可选配置:-setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出度为零的顶点-setParallelism:覆盖 算子并行度
degree.annotate.directed。VertexOutDegree使用out-degree 注释有向图的顶点
  1. DataSet<Vertex<K, LongValue>> outDegree = graph .run(new VertexOutDegree() .setIncludeZeroDegreeVertices(true));
可选配置:-setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出out-degree为零的顶点-setParallelism:覆盖 算子并行度
degree.annotate.directed。VertexDegrees使用degree,out-degree和in-degree 注释有向图的顶点
  1. DataSet<Vertex<K, Tuple2<LongValue, LongValue>>> degrees = graph .run(new VertexDegrees() .setIncludeZeroDegreeVertices(true));
可选配置:-setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出out-and-degree为零的顶点-setParallelism:覆盖 算子并行度
degree.annotate.directed。EdgeSourceDegrees使用源ID的度,出度和度数来标注有向图的
  1. DataSet<Edge<K, Tuple2<EV, Degrees>>> sourceDegrees = graph .run(new EdgeSourceDegrees());
可选配置:-setParallelism:覆盖 算子并行度
degree.annotate.directed。EdgeTargetDegrees使用目标ID的度,出度和度数来标注有向图的
  1. DataSet<Edge<K, Tuple2<EV, Degrees>>> targetDegrees = graph .run(new EdgeTargetDegrees();
可选配置:-setParallelism:覆盖 算子并行度
degree.annotate.directed。EdgeDegreesPair使用源顶点和目标顶点的度,出度和度数来标注有向图的边。
  1. DataSet<Edge<K, Tuple2<EV, Degrees>>> degrees = graph .run(new EdgeDegreesPair());
可选配置:-setParallelism:覆盖 算子并行度
degree.annotate.undirected。VertexDegree用度数注释无向图的顶点
  1. DataSet<Vertex<K, LongValue>> degree = graph .run(new VertexDegree() .setIncludeZeroDegreeVertices(true) .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 .run(new EdgeSourceDegree() .setReduceOnTargetId(true));
可选配置:-setParallelism:覆盖 算子并行度-setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。
degree.annotate.undirected。EdgeTargetDegree使用目标ID的度数注释无向图的
  1. DataSet<Edge<K, Tuple2<EV, LongValue>>> targetDegree = graph .run(new EdgeTargetDegree() .setReduceOnSourceId(true));
可选配置:-setParallelism:覆盖 算子并行度-setReduceOnSourceId:可以从边缘源ID或目标ID计算度。默认情况下,计算目标ID。如果输入边缘列表按源ID排序,则Reduce源ID可以优化算法。
degree.annotate.undirected。EdgeDegreePair使用源顶点和目标顶点的度数注释无向图的边。
  1. DataSet<Edge<K, Tuple3<EV, LongValue, LongValue>>> pairDegree = graph .run(new EdgeDegreePair() .setReduceOnTargetId(true));
可选配置:-setParallelism:覆盖 算子并行度-setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。
degree.filter.undirected。MaximumDegree按最大程度Filter无向图
  1. Graph<K, VV, EV> filteredGraph = graph .run(new MaximumDegree(5000) .setBroadcastHighDegreeVertices(true) .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:覆盖 算子并行度