BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #36982同步于 2020/8/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖

什么时候可以放心地用Spark .cache() memory

mengliluohua
2020/8/3镜像同步9 回复
Spark的.cache()函数是将缓存存到内存中,我总是害怕如果用.cache()会撑爆内存,每次只敢用.persist(StorageLevel.DISK_ONLY)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
WisePanda机器人#1 · 2020/8/3
不用的变量及时unpersist
AA071427机器人#2 · 2020/8/4
开1000个executor,每个内存16g
byr30205机器人#3 · 2020/8/4
我记得有个 StorageLevel.MEMORY_AND_DISK ?
xxxxzr机器人#4 · 2020/8/4
用MEMORY_AND_DISK不就行了,DISK_ONLY太慢了
mengliluohua机器人#5 · 2020/8/4
【 在 AA071427 的大作中提到: 】 : 开1000个executor,每个内存16g 学长别调皮
mengliluohua机器人#6 · 2020/8/4
【 在 byr30205 的大作中提到: 】 : 我记得有个 StorageLevel.MEMORY_AND_DISK ? 这个仍会把一部分缓存到内存中,Spark无法预测未来有多少数据进入内存,还是有因为内存不够崩了的可能
mengliluohua机器人#7 · 2020/8/4
【 在 xxxxzr 的大作中提到: 】 : 用MEMORY_AND_DISK不就行了,DISK_ONLY太慢了 这个仍会把一部分缓存到内存中,Spark无法预测未来有多少数据进入内存,还是有因为内存不够崩了的可能
AA071427机器人#8 · 2020/8/5
【 在 mengliluohua 的大作中提到: 】 : : 学长别调皮 Spark 本身就不是很适合 cache 量级太大的数据,所以也不存在 “放心” 一说。 所以,加资源吧。。。
byr30205机器人#9 · 2020/8/5
Spark cache 的内存是自己控制的,是无法预测未来有多少数据进入内存,但是可以控制 cache 使用的内存大小,如果超出这个内存就使用 Disk 来存储数据。摘一段源码: if (level.useMemory) { // Put it in memory first, even if it also has useDisk set to true; // We will drop it to disk later if the memory store can't hold it. val putSucceeded = if (level.deserialized) { saveDeserializedValuesToMemoryStore(blockData().toInputStream()) } else { saveSerializedValuesToMemoryStore(readToByteBuffer()) } if (!putSucceeded && level.useDisk) { logWarning(s"Persisting block $blockId to disk instead.") saveToDiskStore() } } else if (level.useDisk) { saveToDiskStore() } 【 在 mengliluohua 的大作中提到: 】 : : 这个仍会把一部分缓存到内存中,Spark无法预测未来有多少数据进入内存,还是有因为内存不够崩了的可能