Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 关于在spark中保存模型文件_Apache Spark - Fatal编程技术网

Apache spark 关于在spark中保存模型文件

Apache spark 关于在spark中保存模型文件,apache-spark,Apache Spark,我正在下面的链接中测试线性支持向量机(SVM)的代码: 我用sparkshell--master测试了代码spark://192.168.0.181:7077 我修改了最后两行,如下所示: model.save(sc, "file:///Apps/spark/data/mllib/testModelPath") val sameModel = SVMModel.load(sc, "file:///Apps/spark/data/mllib/testModelPath") model.sav

我正在下面的链接中测试线性支持向量机(SVM)的代码:

我用
sparkshell--master测试了代码spark://192.168.0.181:7077

我修改了最后两行,如下所示:

model.save(sc, "file:///Apps/spark/data/mllib/testModelPath") 
val sameModel = SVMModel.load(sc, "file:///Apps/spark/data/mllib/testModelPath")
model.save结束时没有错误,但当我尝试加载该模型时,它会显示以下消息: INFO mapred.FileInputFormat:要处理的总输入路径:0 java.lang.UnsupportedOperationException:空集合 : :

当我在没有
文件的情况下进行测试时://
,模型保存到HDFS系统,并且我可以无错误地加载该模型

hadoop@XXX /Apps/spark/data/mllib/testModelPath/data> ll 

drwxrwxr-x 2 hadoop hadoop 4096 2015-10-07 16:47 ./ 
drwxrwxr-x 4 hadoop hadoop 4096 2015-10-07 16:47 ../ 
-rw-rw-r-- 1 hadoop hadoop    8 2015-10-07 16:47 ._SUCCESS.crc 
-rw-rw-r-- 1 hadoop hadoop   16 2015-10-07 16:47 ._common_metadata.crc 
-rw-r--r-- 1 hadoop hadoop    0 2015-10-07 16:47 _SUCCESS 
-rw-r--r-- 1 hadoop hadoop  932 2015-10-07 16:47 _common_metadata 
当我在模型保存后检查文件夹时,我发现没有创建_元数据文件


有人知道原因吗?

我也遇到同样的问题。该问题是由保存和加载功能引起的。如果在多个节点中运行spark,则在保存模型时,spark save API只保存节点上相应的分区,因此每个节点上的模型都是不完整的。但是load函数的源代码使用textfileapi来加载模型,textFile需要每个节点上的文件都相同。所以这就造成了问题。我解决这个问题的方法是将模型保存在HDFS上,但这会浪费空间。

model.save()函数实际上是用于HDFS的。如果保存到文件系统,每个工作节点将在本地保存模型的分区,但是SVMModel.load()无法重新组装这些本地分区。如果在保存之前先调用collect(),您将能够在单个节点上保存整个模型,但是当您尝试加载()时,如果工作进程发现其本地文件系统中没有文件,则加载()将失败。有什么原因不能使用HDFS吗?这并不能回答这个问题。您可以,也可以参考页面右侧的相关和链接问题来找到答案。如果您有一个相关但不同的问题,并包含指向此问题的链接以帮助提供上下文。见: