在UDF中保存Pickles

时间:2018-06-04 12:57:46

标签: serialization scikit-learn pyspark apache-spark-sql

我有一个pyspark数据框,它由唯一标识符组合在一起。我需要为每个人训练一个sci-kit模型,然后存储该模型。 下面是我的数据框在小组之后的样子的示例:

from sklearn.externals import joblib
def fit_model_pipline(person,line):
    data_list = line
    vect = TfidfVectorizer()
    db =  DBSCAN(eps=0.4, min_samples=3)
    pipe = Pipeline([('tf-idf', vect), ('dbscan', db)])
    fitted_pipe  = pipe.fit(data_list)
    serialised_model_path = "../../serialised_model/model" "_"+person + ".pkl"
    joblib.dump(fitted_pipe, serialised_model_path)
    return "True"

fit_models_udf = F.udf(fit_model_pipline, StringType())
fitted_models = df_grouped.withColumn("Save_Model", fit_models_udf(df_grouped["person"], df_grouped["data"]))

scikit模型的选择无论如何,但我无法在每个人的UDF中保存模型。下面是代码示例。

IOError: [Errno 2] No such file or directory: u'../../serialised_model/model_Sue.pkl'

我收到此错误:

serialised_model

我检查了文件路径,<script>确实存在上面2个文件夹,我正在运行代码。我还验证了管道工作并在UDF外部运行时保存了pickle。

0 个答案:

没有答案