【发布时间】:2021-01-18 17:57:39
【问题描述】:
我在 Rstudio 中使用超过 500 GB 的光栅。
我的代码运行良好,但问题是 R 将所有栅格数据写入临时文件夹,这意味着计算时间超过 4 天(即使在 SSD 上也是如此)。有没有办法让处理更快? 我正在使用具有 64 GB RAM 和 1.5 GB SSD 的计算机。
最好的问候
【问题讨论】:
我在 Rstudio 中使用超过 500 GB 的光栅。
我的代码运行良好,但问题是 R 将所有栅格数据写入临时文件夹,这意味着计算时间超过 4 天(即使在 SSD 上也是如此)。有没有办法让处理更快? 我正在使用具有 64 GB RAM 和 1.5 GB SSD 的计算机。
最好的问候
【问题讨论】:
我建议尝试terra 包,它的功能与raster 几乎相同,但速度更快。
【讨论】:
我不了解 Sentinel 2,因此在性能方面帮助您很复杂。基本上,您必须尝试 (a) 对 foreach 和 doparallel 包使用一些并行计算,(b) 找到更好的包来使用,或者 (c) 降低复杂性,除了像这样的错误答案'R 不适合大型数据集'。
A) 如果可以划分您的计算(例如,您的问题在于大量计算,但您只是编写结果),则其中一种解决方案是并行计算。例如,使用foreach 和doparallel 包,观察许多时间网络比使用“正常”串行for-loop 快得多(例如,foreach/doparallel 对于计算基本统计数据非常有用对于网络的每个成员和全局网络,只要您需要将这些计算重复到许多“子网络”或许多“网络一次 T”和.combine 一个最大数据集的结果)。最后一个.combine arg。对于单个 500 gb 网络将无用,因此您必须逐个编写结果,并且会很长(4 天 = 几个小时或并行计算,假设并行计算将比您的实际计算快 6 或 7 倍)。
B) 有时,只需确定一个更合适的包,例如文本挖掘计算,以及quanteda package 提供的性能。我更喜欢使用tidyversestyle 计算文本挖掘,但对于大型数据集以及在迁移到 R 以外的另一种语言之前,quanteda 最终非常强大且快速,即使在大型文本数据集上也是如此。在此示例中,如果 Quanteda 太慢而无法在您的数据集上计算 基本 文本挖掘,则您必须迁移到另一种技术或停止部署“死亡计算”和/或降低问题的复杂性/ 解决方案 / 数据集的大小(例如,Quanteda 在 500 gb 的非常大的数据集上计算 GloVe 模型的速度还不够快您正在达到由包 Quanteda,因此您必须尝试 R 以外的另一种语言:Python 或 Java 中的库(如 SpaCy)在非常大的数据集上部署 GloVe 模型时会比 R 更好,这与 R 相比并不是很大)。
【讨论】: