MLlib没有在Spark 2.1中保存模型数据

时间:2017-05-22 22:25:08

标签: apache-spark pyspark

我们有一个大致如下的机器学习模型:

sc = SparkContext(appName = "MLModel")
sqlCtx = SQLContext(sc)
df = sqlCtx.createDataFrame(data_res_promo) 
#where data_res promo comes from a pandas dataframe
indexer = StringIndexer(inputCol="Fecha_Code", outputCol="Fecha_Index")
train_indexer = indexer.fit(df)
train_indexer.save('ALSIndexer') #This saves the indexer architecture

在我的机器中,当我以本地方式运行它时,它会生成一个文件夹ALSIndexer /,它具有镶木地板和模型上的所有信息。

当我在我们的Azure Azure集群中运行它时,它不会在主节点(也不在从节点中)生成文件夹。但是,如果我们尝试重写它,它会说:

cannot overwrite folder

哪个意味着某个地方,但我们无法找到它。

你有什么指示吗?

1 个答案:

答案 0 :(得分:1)

Spark默认将文件保存到分布式文件系统(可能是HDFS)。因此,这些文件在节点本身上是不可见的,但是,由于它们存在,您将获得"无法覆盖文件夹"错误信息。

您可以通过HDFS轻松访问文件,将其复制到主节点。这可以通过以下命令之一在命令行中完成:

1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>

也可以通过导入org.apache.hadoop.fs.FileSystem并使用那里可用的命令来完成。