在 spark 之外使用 spark ML 模型 [无法实例化 hdfs DistributedFileSystem]
Using spark ML models outside of spark [hdfs DistributedFileSystem could not be instantiated]
我一直在努力跟进博客 post:
https://www.phdata.io/exploring-spark-mllib-part-4-exporting-the-model-for-use-outside-of-spark/
在本地使用带有内置 Hadoop 2.7 运行 的 spark 2.1 我可以保存一个模型:
trainedModel.save("mymodel.model"))
但是,如果我尝试从常规 scala (sbt) 加载模型 shell hdfs 无法加载。
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.ml.{PipelineModel, Predictor}
val sc = new SparkContext(new SparkConf().setMaster("local[1]").setAppName("myApp"))
val model = PipelineModel.load("mymodel.model")
我知道这是错误的:
java.util.ServiceConfigurationError: org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.hdfs.DistributedFileSystem could not be instantiated
实际上是否可以在不调用 spark-submit 或 spark-shell 的情况下使用 spark 模型?我链接到的文章是我见过的唯一提到此类功能的文章。
我的 build.sbt 正在使用以下依赖项:
"org.apache.spark" %% "spark-core" % "2.1.0",
"org.apache.spark" % "spark-sql_2.11" % "2.1.0",
"org.apache.spark" % "spark-hive_2.11" % "2.1.0",
"org.apache.spark" % "spark-mllib_2.11" % "2.1.0",
"org.apache.hadoop" % "hadoop-hdfs" % "2.7.0"
在这两种情况下,我都使用 Scala 2.11.8。
编辑:好的,看起来这就是问题的根源
"org.apache.hadoop" % "hadoop-hdfs" % "2.7.0"
我删除了那行,问题就消失了
尝试:
trainedModel.write.overwrite().save("mymodel.model"))
此外,如果您的模型保存在本地,您可以在配置中删除 hdfs。这应该可以防止 spark 尝试实例化 hdfs。
我一直在努力跟进博客 post:
https://www.phdata.io/exploring-spark-mllib-part-4-exporting-the-model-for-use-outside-of-spark/
在本地使用带有内置 Hadoop 2.7 运行 的 spark 2.1 我可以保存一个模型:
trainedModel.save("mymodel.model"))
但是,如果我尝试从常规 scala (sbt) 加载模型 shell hdfs 无法加载。
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.ml.{PipelineModel, Predictor}
val sc = new SparkContext(new SparkConf().setMaster("local[1]").setAppName("myApp"))
val model = PipelineModel.load("mymodel.model")
我知道这是错误的:
java.util.ServiceConfigurationError: org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.hdfs.DistributedFileSystem could not be instantiated
实际上是否可以在不调用 spark-submit 或 spark-shell 的情况下使用 spark 模型?我链接到的文章是我见过的唯一提到此类功能的文章。
我的 build.sbt 正在使用以下依赖项:
"org.apache.spark" %% "spark-core" % "2.1.0",
"org.apache.spark" % "spark-sql_2.11" % "2.1.0",
"org.apache.spark" % "spark-hive_2.11" % "2.1.0",
"org.apache.spark" % "spark-mllib_2.11" % "2.1.0",
"org.apache.hadoop" % "hadoop-hdfs" % "2.7.0"
在这两种情况下,我都使用 Scala 2.11.8。
编辑:好的,看起来这就是问题的根源
"org.apache.hadoop" % "hadoop-hdfs" % "2.7.0"
我删除了那行,问题就消失了
尝试:
trainedModel.write.overwrite().save("mymodel.model"))
此外,如果您的模型保存在本地,您可以在配置中删除 hdfs。这应该可以防止 spark 尝试实例化 hdfs。