Первый алгоритм поиска по глубине в Dataframe (GraphFrame) в искре - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть два фрейма данных, один из которых содержит вершины

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. Любая помощь или предложение было бы здорово. Спасибо

...