我尝试在Scala项目中使用Smile,Scala项目使用Spark和HDFS。为了模型的可重用性,我需要将它们写入HDFS。
现在我使用write对象,预先检查路径是否存在,如果不存在就创建它(否则会抛出FileNotFoundException):
import java.nio.file.Paths
val path: String = "hdfs:/my/hdfs/path"
val outputPath: Path = Paths.get(path)
val outputFile: File = outputPath.toFile
if(!outputFile.exists()) {
outputFile.getParentFile().mkdirs(); // This is a no-op if it exists
outputFile.createNewFile();
}
write(mySmileModel, path)
但这会在本地创建路径“hdfs:/my/hdfs/path,”并将模型写入其中,而不是实际写入HDFS。
请注意,使用Spark模型及其保存方法是有效的:
mySparkModel.save("hdfs:/my/hdfs/path")
因此,我的问题是:如何将Smile模型写入HDFS?
类似地,如果我设法将模型写入HDFS,我可能也会想知道如何从HDFS读取模型。
谢谢你!
1条答案
按热度按时间dojqjjoe1#
最后,我通过为 Package 类编写自己的保存方法解决了这个问题,大致相当于:
类似地,为了加载保存的模型,我编写了一个方法,大致执行以下操作: