在版本1.6中,管道API獲得了一組保存和加載管道階段的新功能。在我訓練分類器並在稍後再次加載以重用它並節省計算再次建模的成本時,我試圖將一個階段保存到磁盤。Spark V1管道API保存不工作
由於某些原因,當我保存模型時,該目錄只包含元數據目錄。當我再次嘗試加載它,我得到以下異常:線程「main」 java.lang.UnsupportedOperationException
例外: 空收集在 org.apache.spark.rdd.RDD $$ anonfun $第一$ 1.適用(RDD.scala:1330)在 org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:150) 在 org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala :111) at org.apache.spark.rdd.RDD.withScope(RDD.scala:316)at org.apache.spark.rdd.RDD.first(RDD.scala:1327)at org.apache.spark .ml.util.DefaultParamsReader $ .loadMetadata(ReadWrite.scala:284) 在 org.apache.spark.ml.tuning.CrossValidator $ SharedReadWrite $ .load(CrossValidator.scala:287) 在 org.apache.spark.ml.tuning.CrossValidatorModel $ CrossValidatorModelReader.load(CrossValidator.scala:393 ) 在 org.apache.spark.ml.tuning.CrossValidatorModel $ CrossValidatorModelReader.load(CrossValidator.scala:384) 在 org.apache.spark.ml.util.MLReadable $ class.load(ReadWrite.scala:176 ) 在 org.apache.spark.ml.tuning.CrossValidatorModel $ .load(CrossValidator.scala:368) 在 org.apache.spark.ml.tuning.CrossValidatorModel.load(CrossValidator.scala) 在 組織.tes t.categoryminer.spark.SparkTextClassifierModelCache.get(SparkTextClassifierModelCache.java:34)
救我用的模型:crossValidatorModel.save("/tmp/my.model")
,並加載它,我用:CrossValidatorModel.load("/tmp/my.model")
我打電話節省我在CrossValidator對象上調用fit(dataframe)時獲得的CrossValidatorModel對象。
任何指針爲什麼只保存元數據目錄?
感謝,將測試它儘快 – Johnny000
感覺錯了 - 但偉大工程! – Johnny000