You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake存储过程存ML模型至Stage遇OSError: [Errno 28]设备空间不足

问题分析与解决方案

这个错误不是Snowflake Stage的空间不够,而是执行存储过程的Warehouse计算节点的本地/tmp目录空间不足。Stage的空间是云存储容量,和计算节点的本地临时磁盘是两回事,小规格的Warehouse(比如X-Small)的/tmp分区往往只有几十MB,哪怕你的模型不到100MB,也会因为/tmp被占满报错。

解决办法:

  • 直接内存中转,跳过本地文件写入
    不用把模型写到/tmp,直接在内存中生成字节流上传,彻底避免本地磁盘占用:

    from io import BytesIO
    import joblib
    
    # 把编码器写入内存缓冲区
    encoder_buffer = BytesIO()
    joblib.dump(encoder, encoder_buffer)
    encoder_buffer.seek(0)  # 重置缓冲区指针到起始位置
    
    # 直接上传缓冲区内容到Stage
    session.file.put_stream(encoder_buffer, f"@DB.Schema/{model_type}encoder.joblib", overwrite=True)
    
  • 清理/tmp旧文件再写入
    如果必须用本地文件,先删除/tmp下的旧临时文件释放空间:

    import os
    import glob
    
    # 清理/tmp下的旧joblib文件
    for old_file in glob.glob('/tmp/*.joblib'):
        os.remove(old_file)
    
    # 执行原有的保存和上传逻辑
    encoder_filename = model_type + "encoder.joblib"
    encoder_model_file = os.path.join('/tmp', encoder_filename)
    joblib.dump(encoder, encoder_model_file)
    session.file.put(encoder_model_file, "@DB.Schema", overwrite=True)
    
  • 升级Warehouse规格
    小规格Warehouse的临时磁盘空间有限,换成更大的Warehouse(比如Small/Medium),能获得更多本地临时存储容量。

内容的提问来源于stack exchange,提问作者JAGADEESHA R G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:46:02