gpt4 book ai didi

apache-spark - Spark 在访问缓存表时抛出 FileNotFoundException

转载 作者:行者123 更新时间:2023-12-04 07:14:26 24 4
gpt4 key购买 nike

我在脚本的早期读取了一个表,但是如果基础表在我读取的分区中发生更改,它会在运行期间失败,例如:

java.io.FileNotFoundException: File does not exist:
hdfs://R2/projects/.../country=AB/date=2021-08-20/part-00005e4-4fa5-aab4-93f02feaf746.c000
即使我专门缓存表并执行操作,如果发生上述情况,脚本仍然会失败。
df.cache()
df.show(1)
我的问题是,这怎么可能?
如果我将数据缓存在内存/磁盘上,为什么底层文件是否更新很重要?
编辑:代码很长,主要内容:
  • df=读入表,其底层数据在上述HDFS文件夹中
  • df。 cache() 和 df.show() 紧随其后,因为 Spark 计算延迟。使用 show() 我使缓存发生
  • 稍后当我提到 df: 如果底层数据发生更改时,脚本将因 java.io.FileNotFoundException 而失败:
     new_df= df.join(
    other_df, 'id', 'right')
  • 最佳答案

    正如评论部分所讨论的那样,Spark 会在遇到内存不足问题时根据 LRU(最近使用租用)概念自动驱逐缓存的数据。
    在您的情况下,spark 可能已驱逐缓存表。如果没有缓存数据,则将使用先前的沿袭再次形成数据帧,如果底层文件丢失,则会引发错误。
    您可以尝试增加内存或将存储级别用作 DISK_ONLY。

     df.persist(StorageLevel.DISK_ONLY)

    关于apache-spark - Spark 在访问缓存表时抛出 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68870576/

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