簡體   English   中英

將 Azure Databricks 中的非 SparkDataFrame 保存為.RData

[英]Save non-SparkDataFrame from Azure Databricks to local computer as .RData

在 Databricks ( SparkR ) 中,我從kohonen package 並行運行自組織 map 的批處理算法,因為與我的本地計算機相比,它大大減少了計算時間。 但是,在安裝 model 后,我想將經過訓練的 model( list )下載/導出到我的本地機器,以繼續以 Databricks 中不可用的方式處理結果(創建繪圖等)。 我知道如何將 SparkDataFrame 保存並下載到SparkDataFrame

sdftest # a SparkDataFrame
write.df(sdftest, path = "dbfs:/FileStore/test.csv", source = "csv", mode = "overwrite")

但是,我不確定如何為“常規”R list object 執行此操作。

有什么方法可以將 Databricks 中創建的 output 以.RData格式保存到我的本地機器上? 如果沒有,是否有一種解決方法仍然可以讓我繼續在本地處理 model 結果?

編輯:

library(kohonen)

# Load data
sdf.cluster <- read.df("abfss://cluster.csv", source = "csv", header="true", inferSchema = "true")

# Collet SDF to RDF as kohonen::som is not available for SparkDataFrames
rdf.cluster <- SparkR::collect(sdf.cluster)

# Change rdf to matrix as is required by kohonen::som
rdf.som <- as.matrix(rdf.cluster)
  
# Parallel Batch SOM from Kohonen
som.grid <- somgrid(xdim = 5, ydim = 5, topo="hexagonal", 
                neighbourhood.fct="gaussian") 
set.seed(1)
som.model <- som(rdf.som, grid=som.grid, rlen=10, alpha=c(0.05,0.01), keep.data = TRUE, dist.fcts = "euclidean", mode = "online")

很感謝任何形式的幫助!

如果您的所有型號都可以裝入驅動程序的 memory,您可以使用spark.lapply 它是基本lapply的分布式版本,需要 function 和列表。 Spark 會將 function 應用於列表的每個元素(如地圖)並收集返回的對象。

這是擬合 kohonen 模型的示例,每個虹膜種類一個:

library(SparkR)
library(kohonen)

fit_model <- function(df) {
  library(kohonen)
  grid_size <- ceiling(nrow(df) ^ (1/2.5))
  som_grid <- somgrid(xdim = grid_size, ydim = grid_size, topo = 'hexagonal', toroidal = T)
  som_model <- som(data.matrix(df), grid = som_grid)
  som_model
}

models <- spark.lapply(split(iris[-5], iris$Species), fit_model)
models 

models變量包含並行擬合的 kohonen 模型列表:

$setosa
SOM of size 5x5 with a hexagonal toroidal topology.
Training data included.

$versicolor
SOM of size 5x5 with a hexagonal toroidal topology.
Training data included.

$virginica
SOM of size 5x5 with a hexagonal toroidal topology.
Training data included.

然后你可以像往常一樣保存/序列化 R object :

saveRDS(models, file="/dbfs/kohonen_models.rds")

請注意,存儲在/dbfs/路徑中的任何文件都可以通過 Databrick 的 DBFS 使用,可通過 CLI 或 API 訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM