Я пытаюсь найти наиболее эффективный способ вывода Map из функции ShortFrams функции GraphFrames и сгладить карту расстояний каждой вершины в отдельные строки в новом DataFrame. Я смог сделать это очень неуклюже, потянув столбец расстояний в словарь, а затем конвертировался оттуда в кадр данных pandas, а затем перешел обратно в фреймворк Spark, но я знаю, что должен быть лучший способ.Преобразование GraphFrames ShortestPath Map в строки DataFrame в PySpark
from graphframes import *
v = sqlContext.createDataFrame([
("a", "Alice", 34),
("b", "Bob", 36),
("c", "Charlie", 30),
], ["id", "name", "age"])
# Create an Edge DataFrame with "src" and "dst" columns
e = sqlContext.createDataFrame([
("a", "b", "friend"),
("b", "c", "follow"),
("c", "b", "follow"),
], ["src", "dst", "relationship"])
# Create a GraphFrame
g = GraphFrame(v, e)
results = g.shortestPaths(landmarks=["a", "b","c"])
results.select("id","distances").show()
+---+--------------------+
| id| distances|
+---+--------------------+
| a|Map(a -> 0, b -> ...|
| b| Map(b -> 0, c -> 1)|
| c| Map(c -> 0, b -> 1)|
+---+--------------------+
То, что я хочу взять выход выше и сглаживать расстояния, сохраняя при этом идентификаторы во что-то вроде этого:
+---+---+---------+
| id| v | distance|
+---+---+---------+
| a| a | 0 |
| a| b | 1 |
| a| c | 2 |
| b| b | 0 |
| b| c | 1 |
| c| c | 0 |
| c| b | 1 |
+---+---+---------+
Спасибо.