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

Dataiku Notebook中保存PySpark Pipeline模型失败求助

问题

在Dataiku Notebook中训练好PySpark Pipeline模型后,执行model.save('/opt/dataiku/design/managed_folders/PROJECT_TEST/9KeBcUKy/ML_SAVED_V23')保存到Dataiku托管目录时触发Py4JJavaError,根源是无法创建临时目录。已验证该路径可通过pickle写入Python DataFrame,但PySpark模型保存失败,更换路径后问题依旧。

相关代码

model = Pipeline(stages=[
    RegexTokenizer(pattern="", inputCol="word", outputCol="char" ,minTokenLength=1),
    NGram(n=3, inputCol="char", outputCol="ngram"),
    HashingTF(inputCol="ngram", outputCol="vector"),
    IDF(inputCol="vector", outputCol="idf"),
    MinHashLSH(inputCol="idf", outputCol="lsh", numHashTables=3)
]).fit(df_2)

df_2_transf = model.transform(df_2)

model.save('/opt/dataiku/design/managed_folders/PROJECT_TEST/9KeBcUKy/ML_SAVED_V23')

核心报错栈

Py4JJavaError: An error occurred while calling o834.save.
: org.apache.spark.SparkException: Job aborted.
    ...
Caused by: java.io.IOException: Mkdirs failed to create file:/opt/dataiku/design/managed_folders/PROJECT_TEST/9KeBcUKy/ML_SAVED_V22/metadata/_temporary/0/_temporary/attempt_202212201117187198772930005281723_0027_m_000000_3 (exists=false, cwd=file:/home/dataiku)
    ...

解决方案

1. 使用Dataiku托管文件夹的HDFS兼容路径

分布式Spark环境下,不能直接使用本地文件系统路径访问Dataiku托管文件夹,需通过Dataiku API获取正确的HDFS协议路径:

import dataiku
from dataiku import managed_folder

# 获取托管文件夹对象
folder = managed_folder.ManagedFolder("9KeBcUKy")
# 获取适配Spark的HDFS路径
hdfs_path = folder.get_path()

# 保存模型到托管文件夹
model.save(f"{hdfs_path}/ML_SAVED_V23")

2. 配置Spark临时目录权限

Spark保存模型时会自动创建临时目录,若Executor节点无权限访问默认临时路径,需在Dataiku的Spark集群配置中指定有权限的临时目录:

spark.local.dir=/tmp/spark-tmp
spark.hadoop.tmp.dir=/tmp/hadoop-tmp

确保所有Executor节点的上述目录对Spark执行用户开放读写权限。

3. 确认执行权限

  • 检查Dataiku项目权限,确保Notebook执行用户对目标托管文件夹拥有读写权限;
  • 若为分布式集群,确认Executor进程的运行用户能跨节点访问目标路径,可联系运维同步节点间目录权限。

4. 用Dataiku原生模型管理替代Spark原生保存

利用Dataiku内置模型注册表,自动处理路径、权限和兼容性问题:

import dataiku
from dataiku.core.model import Model

# 创建Dataiku模型对象
dk_model = Model("my_spark_pipeline", project_key="PROJECT_TEST")
# 保存PySpark模型
dk_model.save(model, flavor="spark")

这种方式还能直接在Dataiku平台内完成模型加载、版本管理和后续部署。


内容的提问来源于stack exchange,提问作者Hardy Smile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:20:26