Spark ML中Pipeline训练后如何保存模型至HDFS及加载使用?
回答:Spark ML Pipeline模型的保存与加载
当然可以!Spark ML完全支持将训练好的PipelineModel保存到HDFS(或其他兼容的分布式存储系统),这样就能避免重复执行耗时的训练过程,下次直接加载模型做预测就行。
一、将训练好的模型保存到HDFS
你通过pipeline.fit(training)得到的model其实是PipelineModel对象,直接调用它的save()方法就能存到HDFS上。示例代码如下:
import org.apache.spark.ml.PipelineModel // 假设你已经训练好model val model = pipeline.fit(training) // 保存到HDFS指定路径,路径格式为hdfs://namenode-host:port/模型存储路径 model.save("hdfs://your-nn-address:9000/spark-models/my-logistic-regression-pipeline")
⚠️ 注意:如果指定的HDFS路径已经存在,Spark会抛出异常。如果需要覆盖已有路径,可以在保存前先设置配置:
// 在SparkSession初始化时添加这个配置,允许覆盖输出路径 spark.conf.set("spark.hadoop.validateOutputSpecs", "false")
二、从HDFS加载模型并进行预测
需要使用PipelineModel.load()方法加载保存的模型,加载完成后就可以像使用训练好的模型一样调用transform()做预测了:
import org.apache.spark.ml.PipelineModel // 从HDFS加载模型 val loadedModel = PipelineModel.load("hdfs://your-nn-address:9000/spark-models/my-logistic-regression-pipeline") // 用加载后的模型对测试数据做预测 val predictions = loadedModel.transform(testData)
这样你就不用每次都重新跑训练流程啦,直接加载模型就能快速完成预测任务~
内容的提问来源于stack exchange,提问作者Knows Not Much
相关产品推荐
相关产品推荐

