2

我有一个使用 livy 提交作业的应用程序。在同一个 livy 会话中,提交了各种作业。有时这些工作可能正在处理类似的数据集,因此我想将数据从一个工作重用到另一个工作。我正在提交的作业中缓存数据集。但是,每当提交新作业时,它都不会获取缓存的数据集,而是重新缓存相同的数据。

缓存数据集是否依赖于变量?例如,如果我这样做

var d1 = //make some dataset
d1.cache

在随后的另一份工作中,

var d2 = //same dataset
d2.cache

我可以期望只有一个缓存数据集,并且 d2 使用以前缓存的数据吗?目前,我在 spark 应用程序的存储部分看到单独的缓存数据。作为参考,我正在使用 Livy 编程 API: 此处用于提交我的工作。

4

1 回答 1

0

d1 和 d2 都将在内存中创建为两个不同的数据帧/数据集。你不能指望它们是相同的,因为它们是两个不同的对象。第二件事是,Cache() 方法是 Spark 中的一种转换,它不一定会在执行语句后立即缓存对象。只有当后期某个Action(如collect、count)出现时,整个DAG才会被解析并触发缓存。

于 2018-08-20T08:14:10.210 回答