错误:无法分配大小为57.8 Gb的向量

时间:2019-05-18 18:52:57

标签: r amazon-web-services amazon-ec2 server rstudio

我想在RStudio服务器上运行模型,但出现此错误。

  

错误:无法分配大小为57.8 Gb的向量

这就是我的数据,它有10,000行。

   latitude longitude                 close_date close_price
1  1.501986  86.35068 2014-08-16 22:25:31.925431   1302246.3
2 36.367095 -98.66428 2014-08-05 06:34:00.165876    147504.5
3 36.599284 -97.92470 2014-08-12 23:48:00.887510    137400.6
4 67.994791  64.68859 2014-08-17 05:27:01.404296    -14112.0

这是我的模特。

library(caret)
training.samples <- data$close_price %>%
  createDataPartition(p = 0.8, list = FALSE)
train.data  <- data[training.samples, ]
test.data <- datatraining.samples, ]

model <- train(
  close_price~., data = train.data, method = "knn",
  trControl = trainControl("cv", number = 1),
  preProcess = c("center","scale"),
  tuneLength = 1
)

我的EC2实例具有超过57 GB的可用空间。这就是内存。

             total       used       free     shared    buffers     cached
Mem:      65951628     830424   65121204         64      23908     215484
-/+ buffers/cache:     591032   65360596
Swap:            0          0          0

它也有足够的存储空间。这是硬盘空间。

Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs        32965196      64  32965132   1% /dev
tmpfs           32975812       0  32975812   0% /dev/shm
/dev/xvda1     103079180 6135168  96843764   6% /

这些是机器上的详细信息。

R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Amazon Linux AMI 2018.03

1 个答案:

答案 0 :(得分:2)

由于there's always a temporary value "*tmp*"以及最终值,您需要2到3倍的预计对象大小才能对其进行任何有用的处理。 (该链接讨论了子集分配,但是它也应用了<-函数的任何使用。)此外,要将新值分配给对象名称,必须有连续的可用内存。因此,即使所谓的“可用”内存也可能不是连续的。您要么需要购买更多的存储空间,要么减小模型的大小。计算全部在RAM或等效RAM中完成。除非您的操作系统提供虚拟内存,否则通常不会进行任何磁盘交换。