我正在尝试使用 GraphFrames 查找从节点 A 到节点 B 且 pathLength < 10 的所有路径。我可以使用以下代码来做到这一点,但是,我想知道是否有更好的方法来做到这一点。
val graph = GraphFrame(vertices, edges)
val motif1 = graph.find("(start)-[]->(d1)").select($"start.id".as("start_id"), $"d1.id".as("end_id"))
val motif2 = graph.find("(start)-[]->(d1); (d1)-[]->(d2)").select($"start.id".as("start_id"), $"d2.id".as("end_id"))
val motif3 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3)").select($"start.id".as("start_id"), $"d3.id".as("end_id"))
val motif4 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4)").select($"start.id".as("start_id"), $"d4.id".as("end_id"))
val motif5 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4) ; (d4)-[]->(d5) ").select($"start.id".as("start_id"), $"d5.id".as("end_id"))
val motif6 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4) ; (d4)-[]->(d5) ; (d5)-[]->(d6)").select($"start.id".as("start_id"), $"d6.id".as("end_id"))
val motif7 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4) ; (d4)-[]->(d5) ; (d5)-[]->(d6) ; (d6)-[]->(d7) ").select($"start.id".as("start_id"), $"d7.id".as("end_id"))
val motif8 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4) ; (d4)-[]->(d5) ; (d5)-[]->(d6) ; (d6)-[]->(d7) ; (d7)-[]->(d8) ").select($"start.id".as("start_id"), $"d8.id".as("end_id"))
val motif9 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4); (d4)-[]->(d5) ; (d5)-[]->(d6) ; (d6)-[]->(d7) ; (d7)-[]->(d8) ; (d8)-[]->(d9)").select($"start.id".as("start_id"), $"d9.id".as("end_id"))
val motif10 = graph.find("(start)-[]->(d1); (d1)-[]->(d2); (d2)-[]->(d3); (d3)-[]->(d4); (d4)-[]->(d5) ; (d5)-[]->(d6) ; (d6)-[]->(d7) ; (d7)-[]->(d8) ; (d8)-[]->(d9) ; (d9)-[]->(d10)").select($"start.id".as("start_id"), $"d10.id".as("end_id"))
val combined = motif1.union(motif2).union(motif3).union(motif4).union(motif5).union(motif6).union(motif7).union(motif8).union(motif9).union(motif10)