图算法
Graph
用于组装API和顶级算法的逻辑块可在Gelly中作为org.apache.flink.graph.asm
包中的图形算法访问。这些算法通过配置参数提供优化和调整,并且在使用类似配置处理相同输入时可以提供隐式运行时重用。
算法:degree.annotate.directed。VertexInDegree
描述:使用in-degree 注释有向图的顶点。
DataSet<Vertex<K, LongValue>> inDegree = graph
.run(new VertexInDegree()
.setIncludeZeroDegreeVertices(true));
可选配置:
-
setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出度为零的顶点
-
setParallelism:覆盖 算子并行度
算法:degree.annotate.directed。VertexOutDegree
描述:使用out-degree 注释有向图的顶点。
DataSet<Vertex<K, LongValue>> outDegree = graph
.run(new VertexOutDegree()
.setIncludeZeroDegreeVertices(true));
可选配置:
-
setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出out-degree为零的顶点
-
setParallelism:覆盖 算子并行度
算法:degree.annotate.directed。VertexDegrees
描述:使用degree,out-degree和in-degree 注释有向图的顶点。
DataSet<Vertex<K, Tuple2<LongValue, LongValue>>> degrees = graph
.run(new VertexDegrees()
.setIncludeZeroDegreeVertices(true));
可选配置:
-
setIncludeZeroDegreeVertices:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出out-and-degree为零的顶点
-
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:默认情况下,只处理边集的计算程度; 设置此标志时,将对顶点集执行附加连接,以便输出度数为零的顶点
-
setParallelism:覆盖 算子并行度
-
setReduceOnTargetId:可以从边缘源ID或目标ID计算度数。默认情况下,会计算源ID。如果输入边缘列表按目标ID排序,则Reduce目标ID可以优化算法。
算法:degree.annotate.undirected。EdgeSourceDegree
描述:使用源ID的度数注释无向图的边。
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的度数注释无向图的边。
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
描述:使用源顶点和目标顶点的度数注释无向图的边。
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无向图。
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。简化
描述:从有向图中删除自循环和重复边。
graph.run(new Simplify());
可选配置:
- setParallelism:覆盖 算子并行度
算法:simple.undirected。简化
描述:添加对称边并从无向图中移除自循环和复制边。
graph.run(new Simplify());
可选配置:
- setParallelism:覆盖 算子并行度
算法:翻译。TranslateGraphIds
描述:使用给定的转换顶点和边ID TranslateFunction
。
graph.run(new TranslateGraphIds(new LongValueToStringValue()));
所需配置:
- 翻译器:实现类型或值转换
可选配置:
- setParallelism:覆盖 算子并行度
算法:翻译。TranslateVertexValues
描述:使用给定的转换顶点值TranslateFunction
。
graph.run(new TranslateVertexValues(new LongValueAddOffset(vertexCount)));
所需配置:
- 翻译器:实现类型或值转换
可选配置:
- setParallelism:覆盖 算子并行度
算法:翻译。TranslateEdgeValues
描述:使用给定的转换边缘值TranslateFunction
。
graph.run(new TranslateEdgeValues(new Nullify()));
所需配置:
- 翻译器:实现类型或值转换
可选配置:
- setParallelism:覆盖 算子并行度