У меня есть следующий фрейм данных, который состоит из вершин (индекса) и всех ребер этой вершины: версия spark: 2.4 / graphframe 0.6
+-----+------------+
|index| temp_index|
+-----+------------+
|364|[16, 28, 169..|
| 18|[18, 19, 45...|
|362|[3, 21, 22,...|
| 64|[39, 64, 211..|
| 82|[35, 43, 46...|
|281|[2, 91, 102...|
+-----+------------+
И я хочу создать из него график используя искру. Метод, который я использовал, был взорвать все списки, а затем переименовать фрейм данных и таким образом создать все ребра.
column = ['temp_index']
vertices = df.drop(*column).withColumnRenamed('index', 'id')
df= df.withColumn('temp_index', explode('temp_index'))
edges = df.withColumnRenamed('index', 'src').withColumnRenamed('temp_index', 'dst')
g = GraphFrame(vertices, edges)
Для небольших наборов данных это работает хорошо, но для больших наборов данных функция разнесения довольно медленная (каждый из этих списков содержит до 1.000.000 ребер), есть ли способ сделать его более эффективным?