我正在使用 scala:2.11.8 和 spark 。
我通过spark加载了crossValidationModel。
val crossValidatorModel: CrossValidatorModel = CrossValidatorModel.
read.load(getClass.getResource(modelPath).toString.replace("file:", ""))
我运行代码时,它没有例外,可以读取 src / main / resources 文件夹中的文件夹 / model 。
但是我想将其泊坞窗化。
使用命令docker化之后:
sbt docker:publishLocal
我通过以下方式运行它:
docker run "its image ID"
但是运行后,spark无法文件夹“ / model”及以下抛出的异常:
线程“主”中的异常java.lang.IllegalArgumentException: java.net.URISyntaxException:绝对URI中的相对路径: jar:文件:/opt/docker/lib/tamiz-0.1.0.jar!/ model位于 org.apache.hadoop.fs.Path.initialize(Path.java:206)在 org.apache.hadoop.fs.Path。(Path.java:172)在 org.apache.hadoop.fs.Path。(Path.java:89)在 org.apache.spark.ml.util.DefaultParamsReader $ .loadMetadata(ReadWrite.scala:386) 在 org.apache.spark.ml.tuning.ValidatorParams $ .loadImpl(ValidatorParams.scala:180) 在 org.apache.spark.ml.tuning.CrossValidatorModel $ CrossValidatorModelReader.load(CrossValidator.scala:388) 在 org.apache.spark.ml.tuning.CrossValidatorModel $ CrossValidatorModelReader.load(CrossValidator.scala:379) 在 com.miras.miniature.Main $ .delayedEndpoint $ com $ miras $ miniature $ Main $ 1(Main.scala:32) 在com.miras.miniature.Main $ delayedInit $ body.apply(Main.scala:21)在 scala.Function0 $ class.apply $ mcV $ sp(Function0.scala:34)在 scala.runtime.AbstractFunction0.apply $ mcV $ sp(AbstractFunction0.scala:12) 在scala.App $$ anonfun $ main $ 1.apply(App.scala:76)在 scala.App $$ anonfun $ main $ 1.apply(App.scala:76)在 scala.collection.immutable.List.foreach(List.scala:381)在 scala.collection.generic.TraversableForwarder $ class.foreach(TraversableForwarder.scala:35) 在scala.App $ class.main(App.scala:76)
实际上,我想要一个在dockeriztion之后通过Spark加载模型的解决方案