将Azure DataRicks中的非SparkDataFrame作为.RData保存到本地计算机
在Databricks(将Azure DataRicks中的非SparkDataFrame作为.RData保存到本地计算机,r,databricks,azure-databricks,sparkr,R,Databricks,Azure Databricks,Sparkr,在Databricks(SparkR)中,我从kohonen包并行运行自组织映射的批处理算法,因为与本地机器相比,它大大减少了计算时间。但是,在安装模型后,我想将经过培训的模型(a列表)下载/导出到我的本地机器,以一种在Databricks中不可用的方式继续处理结果(创建绘图等)。我知道如何将SparkDataFrame保存并下载到csv: sdftest # a SparkDataFrame write.df(sdftest, path = "dbfs:/FileStore/test
SparkR
)中,我从kohonen
包并行运行自组织映射的批处理算法,因为与本地机器相比,它大大减少了计算时间。但是,在安装模型后,我想将经过培训的模型(a列表
)下载/导出到我的本地机器,以一种在Databricks中不可用的方式继续处理结果(创建绘图等)。我知道如何将SparkDataFrame
保存并下载到csv:
sdftest # a SparkDataFrame
write.df(sdftest, path = "dbfs:/FileStore/test.csv", source = "csv", mode = "overwrite")
但是,我不知道如何为“常规”R列表
对象执行此操作
有没有办法将在Databricks中创建的输出以.RData
格式保存到我的本地机器上?如果没有,是否有一种变通方法允许我继续在本地处理模型结果
编辑:
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")
库(kohonen)
#加载数据
sdf.cluster如果您的所有型号都能放入驾驶员的内存,您可以使用spark.lappy
。它是baselappy
的分布式版本,需要一个函数和一个列表。Spark将把函数应用于列表的每个元素(如映射),并收集返回的对象
下面是一个拟合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
然后可以像往常一样保存/序列化R对象:
saveRDS(models, file="/dbfs/kohonen_models.rds")
请注意,存储在/dbfs/
路径中的任何文件都可以通过Databrick的dbfs访问,可通过CLI或API访问。您是否有生成要保存的kohoen模型的代码示例?@Emer是的,请参阅编辑后的答案。谢谢!我已尝试了您提出的解决方案,但不幸的是,Databricks在运行30分钟后返回此消息:spark驱动程序意外停止,正在重新启动。您的笔记本将自动重新连接。
@RinzeBloem尝试分离并重新连接笔记本。我只是尝试在Databricks社区版中编写代码,效果很好。这里是笔记本的链接:真的很抱歉@Emer如此痛苦。我设法解决了以前的错误,但是现在它被库中的error(kohonen)取代了:没有名为'kohonen'
的包,因为我已经多次安装了它。我尝试分离并重新连接,但没有任何运气。@RinzeBloem我在第一次运行代码时遇到了相同的错误。尝试运行顶部单元格中的install.packages(“kohonen”)
。请注意它在共享笔记本中的注释。不幸的是,相同的错误仍然存在。我以文字形式复制了您的工作簿并取消了install.packages(“kohonen”)的注释,但结果相同。
saveRDS(models, file="/dbfs/kohonen_models.rds")