Livy中未使用的缓存数据集

时间:2018-08-20 07:01:25

标签: apache-spark caching livy

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

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

var d1 = //make some dataset
d1.cache

以及其他后续工作

var d2 = //same dataset
d2.cache

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

1 个答案:

答案 0 :(得分:1)

d1和d2都将创建为内存中两个不同的数据帧/数据集。您不能期望它们是相同的,因为它们是两个不同的对象。第二件事是,Cache()方法是Spark中的一种转换,它不一定会在执行语句后立即缓存对象。只有在稍后阶段显示一个动作(例如收集,计数)时,整个DAG才会被解析,并且缓存将被触发。