SparkR中的检查点数据帧
我正在使用R/spark循环浏览许多csv数据文件。每个文件中大约1%必须保留(根据特定标准过滤)并与下一个数据文件合并(我使用了SparkR中的检查点数据帧,r,apache-spark,checkpointing,R,Apache Spark,Checkpointing,我正在使用R/spark循环浏览许多csv数据文件。每个文件中大约1%必须保留(根据特定标准过滤)并与下一个数据文件合并(我使用了union/rbind)。但是,随着循环的运行,随着spark记住以前的所有数据集和filter()-s,数据的沿袭会越来越长 在spark R API中是否有执行检查点的方法?我了解到spark 2.1有数据帧检查点,但这似乎不是R提供的。我们在一个相当大的图(几十亿数据)上使用Scala/GraphX和搜索连接的组件时遇到了同样的问题 我不确定你的特定版本在R中有
union
/rbind
)。但是,随着循环的运行,随着spark记住以前的所有数据集和filter()
-s,数据的沿袭会越来越长
在spark R API中是否有执行检查点的方法?我了解到spark 2.1有数据帧检查点,但这似乎不是R提供的。我们在一个相当大的图(几十亿数据)上使用Scala/GraphX和搜索连接的组件时遇到了同样的问题 我不确定你的特定版本在R中有什么可用的,但通常的解决方法是通过“保存”数据然后重新加载来打破沿袭。在我们的例子中,我们每15次迭代就破坏一次沿袭:
def refreshGraph[VD: ClassTag, ED: ClassTag](g: Graph[VD, ED], checkpointDir: String, iterationCount: Int, numPartitions: Int): Graph[VD, ED] = {
val path = checkpointDir + "/iter-" + iterationCount
saveGraph(g, path)
g.unpersist()
loadGraph(path, numPartitions)
}
一个不完整的解决方案/解决方法是将数据帧收集到一个R对象中,然后通过
createDataFrame()
重新并行化。这适用于小数据,但对于较大的数据集,它会变得太慢,并抱怨任务太大。谢谢,我看到您在每个循环中使用不同的文件。我早些时候用同一个文件尝试了它,所以它不起作用。我将测试并接受你的答案,如果它对我有效。它现在似乎有效:-)尽管我遇到了另一个瓶颈:-(你可以编辑你的第一个问题或链接到你的新问题