我在Rstudio中使用了500多个Gigabyte Raster。
我的代码运行良好,但问题是R将所有光栅数据写入临时文件夹,这意味着计算时间超过4天(即使在SSD上(。有没有办法加快处理速度?我正在一台64GB RAM和1.5 GB SSD的电脑上工作。
向致以最良好的问候
我不知道Sentinel 2,所以在性能方面帮助您很复杂。基本上,您必须尝试(a(使用foreach
和doparallel
包进行一些并行计算,(b(找到更好的包来处理,或者(c(降低复杂性,此外还有诸如"R不适合大型数据集"之类的糟糕答案。
A( 其中一种解决方案是并行计算,如果可以划分你的计算(例如,你的问题包括很多计算,但你只是写结果(。例如对于foreach
和doparallel
封装,观察许多时间网络比使用"正常"串行for
循环要快得多(例如,foreach
/doparallel
对于计算网络的每个成员和全局网络的基本统计信息非常有用,只要您需要在一次T和.combine
对许多"子网络"或许多"网络"重复这些计算,就会在最大数据集中得到结果(。最后一个.combine
参数。对于一个500gb的网络来说是无用的,所以你必须一个接一个地写结果,这将是非常长的(4天=几个小时或并行计算,假设并行计算将比你的实际计算快6或7倍(。
B( 有时,这只是确定一个更合适的包的问题,例如文本挖掘计算和quanteda package
提供的性能。我更喜欢使用tidyverse
风格来计算文本挖掘,但对于大型数据集,在迁移到另一种语言而不是R之前,quanteda
最终非常强大且快速,即使在大型文本数据集上也是如此。在本例中,如果Quantada太慢,无法在数据集上计算基本文本挖掘,你必须迁移到另一种技术,或者停止部署"死亡计算"和/或降低问题/解决方案/数据集大小的复杂性(例如,Quanteda
在500gb的超大数据集上计算GloVe模型的速度还不快,您已经达到了Quantda包提供的方法的边界,所以您必须尝试其他语言而不是R:Python或Java中的库(如SpaCy(将比R更好地在超大数据集部署GloVe模型,而且它与R相差不大(。
我建议尝试terra
包,它的功能与raster
几乎相同,但速度可能更快。