Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Azure DataRicks中的非SparkDataFrame作为.RData保存到本地计算机_R_Databricks_Azure Databricks_Sparkr - Fatal编程技术网

将Azure DataRicks中的非SparkDataFrame作为.RData保存到本地计算机

将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

在Databricks(
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
。它是base
lappy
的分布式版本,需要一个函数和一个列表。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")