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

How do I save machine learning model(Kmeans) in S3 from glue ETL job in written in pyspark?

我试过 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")