【问题标题】:how to cache data in apache spark that can be used by other spark job如何在apache spark中缓存其他spark作业可以使用的数据
【发布时间】:2015-07-27 18:15:38
【问题描述】:

我有一个简单的 spark 代码,其中我使用 SparkContext.textFile() 读取文件,然后对该数据执行一些操作,我使用 spark-jobserver 获取输出。 在代码中,我正在缓存数据,但在作业结束后我再次执行 spark-job 然后它不会采用缓存中已经存在的同一个文件。因此,每次加载文件都会花费更多时间。

示例代码如下:

val sc=new SparkContext("local","test")
val data=sc.textFile("path/to/file.txt").cache()
val lines=data.count()
println(lines)

在这里,如果我正在读取同一个文件,那么当我第二次执行它时,它应该从缓存中获取数据,但它不会从缓存中获取数据。

有什么方法可以在多个 Spark 作业之间共享缓存数据?

【问题讨论】:

    标签: scala apache-spark spark-jobserver


    【解决方案1】:

    是的 - 通过在您获得的 RDD 上调用 persist/cache 并在同一上下文中提交其他作业

    【讨论】:

    • 但如果我再次运行该作业,那么 SparkContext 将有所不同,因此之前作业中缓存的数据将不可用。
    • 正确,您必须保持上下文运行 - 例如,您可以使用 spark job-server github.com/spark-jobserver/spark-jobserver 在多个作业中长时间运行上下文
    猜你喜欢
    • 2016-09-12
    • 2017-08-19
    • 2020-01-28
    • 1970-01-01
    • 2017-07-20
    • 2016-05-26
    • 1970-01-01
    • 2018-10-23
    • 2020-07-30
    相关资源
    最近更新 更多