每次循环迭代时,Spark都会重新扫描配置单元表

时间:2018-10-17 16:44:21

标签: apache-spark apache-spark-sql

我正在计算图上某些节点的下游闭合。我的查询使用一些spark 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()
}

问题是每次循环迭代时都会扫描edge表。我尝试持久化所有数据集,但这无济于事。

有什么方法可以只读取一次表吗?

0 个答案:

没有答案