gpt4 book ai didi

java - 有没有办法改变 Spark 中 RDD 的复制因子?

转载 作者:可可西里 更新时间:2023-11-01 14:16:30 27 4
gpt4 key购买 nike

据我了解,集群中的RDD中的数据存在多份副本,这样当某个节点出现故障时,程序可以恢复。然而,在失败的可能性可以忽略不计的情况下,在 RDD 中拥有多个数据副本在内存方面的成本很高。那么,我的问题是,Spark中是否有一个参数可以用来降低RDD的复制因子?

最佳答案

首先,请注意 Spark 不会自动缓存所有 RDD,这仅仅是因为应用程序可能会创建许多 RDD,并且并非所有这些都将被重用。您必须对它们调用 .persist().cache()

你可以设置你想要持久化一个RDD的存储级别myRDD.persist(StorageLevel.MEMORY_AND_DISK).cache().persist(StorageLevel.MEMORY_ONLY) 的简写。

对于 Java 或 Scala 中的 RDDpersist 的默认存储级别确实是 StorageLevel.MEMORY_ONLY——但如果您正在创建,则通常会有所不同DStream(请参阅您的 DStream 构造函数 API 文档)。如果您使用的是 Python,则为 StorageLevel.MEMORY_ONLY_SER

doc详细介绍了一些存储级别及其含义,但它们基本上是一种配置速记,用于将 Spark 指向扩展 StorageLevel class 的对象。 .因此,您可以定义自己的复制因子,最高可达 40。

请注意,在各种预定义的存储级别中,有些保留 RDD 的单个副本。事实上,所有那些名称后缀没有 _2 的都是这样(NONE 除外):

  • DISK_ONLY
  • MEMORY_ONLY
  • MEMORY_ONLY_SER
  • MEMORY_AND_DISK
  • MEMORY_AND_DISK_SER
  • OFF_HEAP

这是他们使用的每个介质一个副本,当然,如果您想要一个整体的副本,则必须选择单一介质存储级别。

关于java - 有没有办法改变 Spark 中 RDD 的复制因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com