Я вычисляю нисходящее закрытие некоторых узлов на графике.Мой запрос читает график несколькими искровыми SQL-запросами, а затем соединяет ребра в цикле до тех пор, пока он не сможет.
val edges = ctx.sql("select * from edges")
var tree = null
for (i <- 1 to 10) {
if (tree == null) {
tree = edges.joinWith(edges, col("dst") == col("src"))
} else {
tree = tree.joinWith(edges, col("dst") == col("src"))
}
tree.show()
}
Проблема заключается в том, что таблица ребер сканируется при каждой итерации цикла.Я пытался сохранить все наборы данных, но это не помогает.
Есть ли способ прочитать таблицу только один раз?