gpt4 book ai didi

apache-spark - RDD.checkpoint() 不在检查点目录中存储任何数据

转载 作者:行者123 更新时间:2023-12-04 05:05:49 25 4
gpt4 key购买 nike

我已经用 sc.setCheckpointDir 设置了检查点目录方法。

/checkpointDirectory/

然后我创建了一个 rdd 的检查点: rdd.checkpoint()在目录中,我现在看到一个新目录,以随机字母字符串的形式表示新检查点。在那个目录里面什么都没有。
/checkpointDirectory/37d2812a-bca2-4fc5-b5d4-221ae03a6d25/  [empty]

然后在做了几次转换之后,我运行 rdd.checkpoint()再次,最近创建的目录中仍然没有任何内容
/checkpointDirectory/37d2812a-bca2-4fc5-b5d4-221ae03a6d25/  [empty]

我在用 checkpoint()错误的?我应该在该目录中看到什么才能知道它是否正常工作?

最佳答案

checkpoint和 Spark 中的许多其他操作一样,是一种懒惰的操作。当且仅当给定的 RDD 被物化时,数据才会被实际检查点。您看到的空目录是特定于应用程序的检查点目录。

如果你想要检查点发生,你必须触发一个 Action 来评估相应的 RDD。举例(本地模式):

import glob
import os
from urllib.parse import urlparse

sc.setCheckpointDir("/tmp/checkpoints/")
ch_dir = os.path.join(urlparse(sc._jsc.getCheckpointDir().orElse("")).path, "*")

rdd = sc.range(1000, 10)
plus_one = rdd.map(lambda x: x + 1)
plus_one.cache()
plus_one.checkpoint() # No checkpoint dir here yet

[os.path.split(x)[-1] for x in glob.glob(ch_dir)]
## []
plus_one.isCheckpointed()
## False

# After count is executed you'll see rdd specific checkpoint dir
plus_one.count()
[os.path.split(x)[-1] for x in glob.glob(ch_dir)]
## ['rdd-1']
plus_one.isCheckpointed()
## True

您还可以在之前分析调试字符串:

## (8) PythonRDD[1] at RDD at PythonRDD.scala:48 [Memory Serialized 1x Replicated]
## | ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:475 [Memory Serialized 1x Replicated]

在一个 Action 之后:

## (8) PythonRDD[1] at RDD at PythonRDD.scala:48 [Memory Serialized 1x Replicated]
## | CachedPartitions: 8; MemorySize: 168.0 B; ExternalBlockStoreSize: 0.0 B; DiskSize: 0.0 B
## | ReliableCheckpointRDD[3] at count at <ipython-input-16-96e746c56973>:1 [Memory Serialized 1x Replicated]

正如你所看到的,在 RDD 之前会从头开始计算,但在 count 之后你会得到 ReliableCheckpointRDD .

关于apache-spark - RDD.checkpoint() 不在检查点目录中存储任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37777326/

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