scala - 如何保存 Spark mllib KMeans 模型?model.save 导致空目录
问题描述
我有一个流源,我试图首先导出聚类 K-Means 模型。稍后我计划将此模型加载到 StreamingKMeans。这是我走了多远,但保存操作导致空文件夹/数据。
srtLabeledPoints.foreachRDD{ rdd => {
import sparkSession.implicits._
val testTrain = rdd.randomSplit(Array(0.3, 0.7))
val test = testTrain(0)
val train = testTrain(1)
val model = kMeans.run(train.map(f => f.features))
val a = model.predict(test.map(f => f.features))
println("******************")
a.take(50).foreach(println)
val b = model.save(sparkSession.sparkContext, "/mnt/c/Users/ssss/ml/oooModel3" + a.id)
println("******************")
}
rdd.unpersist()
}
其中kmeans如下
val kMeans = new org.apache.spark.mllib.clustering.KMeans()
.setK(20) //# of clusters
.setSeed(31)
我看到控制台上显示的分类(0 到 19 之间)(带有 take 操作)。但是 /data 是空的,并且 /metadata 有一个 1Kb 的文件,其内容如下:
{"class":"org.apache.spark.mllib.clustering.KMeansModel","version":"2.0","k":20,"distanceMeasure":"euclidean","trainingCost":5.147088938203919E11}
为了保存模型,我做错了什么?
解决方案
推荐阅读
- sql - 如何从现有表记录创建视图,同时添加不存在的新记录
- node.js - 尝试在终端中使用 geoproject 命令时抛出错误
- apache-kafka - kafka Connect:Tasks.max 超过 # 个分区,但状态显示为 RUNNING
- typescript - Typescript 使用 Absolute Import Linting 测试问题
- javascript - 在 Javascript 中查找不包含/indexOf/Regex 的字符串中的子字符串
- servicestack - 将连接字符串从 Startup 传递到任何其他控制器的正确方法
- sql - Azure SQL 垂直弹性查询教程错误
- javascript - 如何为 Stripe 的“RateLimitError”和“StripePermissionError”错误编写测试?
- r - Different scale for faceted plots: scale_y_continuous()
- d3.js - 如何限制缩放以防止缩放轴?