如何从用pyspark编写的胶水ETL作业保存S3中的机器学习模型Kmeans?

问题描述

我尝试了 model.save(sc,path) 它给了我错误TypeError: save() 需要 2 个位置参数,但给出了 3 个。这里 sc 是 sparkcontext [sc = SparkContext()] 我尝试在签名中不使用 sc 但收到此错误调用 o159.save 时发生错误java.lang.RuntimeException: java.lang.classNotFoundException: Class org.apache.hadoop.mapred.DirectOutputCommitter 未找到 我使用 boto3 pickle joblib 尝试了多种方法,但我没有成功找到有效的解决方案。我正在创建一个 KMeans 聚类模型。我需要一个粘合作业来拟合并在 S3 中保存模型,然后另一个粘合作业通过加载保存的模型来进行预测。 我是第一次这样做,任何帮助将不胜感激。

解决方法

在 SparkContext 解决我的问题后添加行。

sc = SparkContext()

sc._jsc.hadoopConfiguration().set("mapred.output.committer.class","org.apache.hadoop.mapred.DirectFileOutputCommitter")