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

在Databricks上用MLflow记录Spark模型时遇404资源不存在错误

调试方向与解决方案

核心排查点

  • 确认MLflow运行会话是否活跃
    调用mlflow.spark.log_model()时必须处于有效的MLflow运行会话中。如果代码里提前调用了mlflow.end_run(),或者运行会话意外终止,后续log_model就会因找不到运行记录报404。可以在log_model前加一行print(mlflow.active_run()),输出不为None才是正常状态。
  • 检查Spark模型的序列化能力
    Spark随机森林模型如果包含自定义Transformer、UDF这类无法序列化的组件,会导致MLflow无法正常保存模型。先试试直接把模型存到DBFS:model.write().overwrite().save("/tmp/test-spark-model"),如果失败,先解决模型序列化的问题,再用MLflow记录。
  • 核对MLflow版本与集群兼容性
    Databricks 10.4 LTS默认适配MLflow 1.26.0,运行print(mlflow.__version__)确认版本是否匹配。如果版本不对,在集群库管理里重新安装对应版本的MLflow,重启集群再试。
  • 检查制品目录权限与路径
    确保当前用户对默认制品目录dbfs:/databricks/mlflow-tracking/有读写权限,也可以手动往这个路径写个文件验证。如果指定了自定义artifact_path,别用特殊字符,确保路径存在且有权限。

修复示例代码

  1. 规范运行会话管理:
    import mlflow
    from pyspark.ml.classification import RandomForestClassifier
    
    # 用with语句确保运行会话直到log_model完成才结束
    with mlflow.start_run() as run:
        # 训练模型
        rf = RandomForestClassifier(numTrees=10)
        model = rf.fit(training_data)
        
        # 记录参数、指标
        mlflow.log_param("numTrees", 10)
        mlflow.log_metric("accuracy", 0.85)
        
        # 记录Spark模型
        mlflow.spark.log_model(model, artifact_path="spark-rf-model")
    
  2. 验证模型序列化:
    # 先测试直接保存模型到DBFS
    model.write().overwrite().save("/tmp/test-spark-model")
    # 成功的话再用MLflow记录;失败就排查模型里的自定义组件
    
  3. 同步MLflow版本:
    在集群的PyPI库中添加mlflow==1.26.0,重启集群后重试操作。

额外调试技巧

开启MLflow调试日志,获取更详细的错误细节:

import logging
logging.basicConfig(level=logging.DEBUG)

内容的提问来源于stack exchange,提问作者Kavishka Gamage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:11:17