У меня есть два фрейма данных, один из которых содержит вершины
val v = sqlContext.createDataFrame(scala.List(
("a", "Alice", 34),
("b", "Bob", 36),
("c", "Charlie", 30),
("d", "David", 29),
("e", "Esther", 1),
("f", "Fanny", 36),
("g", "Gabby", 60),
("h", "harry", 45),
("i", "ishwar", 37),
("j", "James", 65),
("z", "James", 65),
("k", "Kamla", 43),
("l", "laila", 54)
)).toDF("id", "name", "age")
, а другой содержит ребра
val e = sqlContext.createDataFrame(scala.List(
("a", "b", "follow", 193, 231),
("b", "c", "friend", 113, 211),
("c", "d", "follow", 124, 222),
("d", "e", "follow", 135, 233),
("f", "c", "follow", 146, 243),
("b", "f", "follow", 146, 243),
("h", "i", "friend", 123, 265),
("i", "h", "friend", 123, 265),
("i", "j", "friend", 126, 223),
("j", "h", "friend", 126, 223),
("f", "g", "friend", 157, 243),
("i", "a", "friend", 157, 243)
)).toDF("src", "dst", "relationship", "SNO", "Salary")
Мне нужен фрейм данных, который содержит пути со всеми возможными путями из вершин. скажите vert 'a' to 'e' так же, как это делает алгоритм DFS.
Он должен выдавать результат как
|n1 |e1 |n2 |e2 |n3 |e3 |n4 |e4 |n5 |
+--------------+------------------------+------------+------------------------+----------------+------------------------+--------------+------------------------+--------------+
|[a, Alice, 34]|[a, b, follow, 193, 231]|[b, Bob, 36]|[b, c, friend, 113, 211]|[c, Charlie, 30]|[c, d, follow, 124, 222]|[d, David, 29]|[d, e, follow, 135, 233]|[e, Esther, 1]|
+--------------+------------------------+------------+------------------------+----------------+------------------------+--------------+------------------------+--------------+
+--------------+------------------------+------------+------------------------+--------------+------------------------+----------------+------------------------+--------------+------------------------+--------------+
|n1 |e1 |n2 |e2 |n3 |e3 |n4 |e4 |n5 |e5 |n6 |
+--------------+------------------------+------------+------------------------+--------------+------------------------+----------------+------------------------+--------------+------------------------+--------------+
|[a, Alice, 34]|[a, b, follow, 193, 231]|[b, Bob, 36]|[b, f, follow, 146, 243]|[f, Fanny, 36]|[f, c, follow, 146, 243]|[c, Charlie, 30]|[c, d, follow, 124, 222]|[d, David, 29]|[d, e, follow, 135, 233]|[e, Esther, 1]|
+--------------+------------------------+------------+------------------------+--------------+------------------------+----------------+------------------------+--------------+------------------------+--------------+
Я хочу алгоритм DFS в кадре данных, чтобы Я могу сделать еще одну задачу на этом производном datframe или Graphframe. Любая помощь или предложение было бы здорово. Спасибо