【问题标题】:Spark persist method never finishes [closed]Spark persist方法永远不会完成[关闭]
【发布时间】:2018-07-08 06:06:23
【问题描述】:

我为数据集调用persist方法,通常它工作正常,但有时它永远不会完成。我将 cloudera 与 Spark 2.1 一起使用。有没有人有同样的经历?

originalDataSet = originalDataSet.persist(StorageLevel.MEMORY_AND_DISK());

【问题讨论】:

    标签: apache-spark spark-dataframe cloudera


    【解决方案1】:

    就像 Spark 中的其他所有内容一样,persist 操作是惰性求值的。第一次对底层数据执行操作,并执行 DAG 的相关部分时,它们将发挥作用。

    因此,您不应该也不会从 persist 命令本身看到任何问题。

    数据是持久化的,在本例中是存储到内存和磁盘,但仅存储到容量点。如果由于缓存容量不足而需要删除该数据,Spark 会这样做。

    Spark 自动监控每个节点上的缓存使用情况并退出 以最近最少使用 (LRU) 方式的旧数据分区。如果你 想手动移除一个 RDD 而不是等待它掉落 从缓存中取出,使用 RDD.unpersist() 方法。

    https://spark.apache.org/docs/2.2.0/rdd-programming-guide.html#rdd-persistence

    【讨论】:

    • 广泛的问题 => 广泛的答案(即使它是一个很好的答案)
    • 我个人投票关闭它
    • 这并不完全正确,缓存也可以启动 Spark 作业,参见例如stackoverflow.com/questions/42951939/…stackoverflow.com/questions/45419963/…
    • @eliasah - 好电话,你是对的
    • 我误会了。代码执行在这一行停止。它与延迟初始化无关。执行者也不活跃,而且并不总是很少发生。
    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多