2017-05-22 38 views
0

我們有一個機器學習模型,看起來大致是這樣的:MLlib不保存模型數據星火2.1

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 /那具有鑲木地板和模型上的所有信息。

當我在我們的Spark的Azure集羣中運行它時,它不會在主節點(也不在從屬節點)生成文件夾。但是,如果我們嘗試重寫它,它會說:

cannot overwrite folder 

這意味着什麼地方,但我們找不到它。

你有什麼建議嗎?

+0

您是否檢查過羣集上的分佈式文件系統(hdfs或等效文件系統)? – Shaido

+0

嘗試在HDFS中給出絕對路徑,如/ home/ml/alsindexer。我假設它可能試圖寫入/ user/spark /目前。 –

+0

@Shaido是正確的,它在hdfs中,它只是一個複製回來的問題。你會不會把它作爲答案,以便你得到答案? –

回答

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進行,並利用現有的有命令。