【问题标题】:Working with lage datasets in R (Sentinel 2)在 R 中处理大型数据集(Sentinel 2)
【发布时间】:2021-01-18 17:57:39
【问题描述】:

我在 Rstudio 中使用超过 500 GB 的光栅。

我的代码运行良好,但问题是 R 将所有栅格数据写入临时文件夹,这意味着计算时间超过 4 天(即使在 SSD 上也是如此)。有没有办法让处理更快? 我正在使用具有 64 GB RAM 和 1.5 GB SSD 的计算机。

最好的问候

【问题讨论】:

    标签: r bigdata


    【解决方案1】:

    我建议尝试terra 包,它的功能与raster 几乎相同,但速度更快。

    【讨论】:

      【解决方案2】:

      我不了解 Sentinel 2,因此在性能方面帮助您很复杂。基本上,您必须尝试 (a) 对 foreachdoparallel 包使用一些并行计算,(b) 找到更好的包来使用,或者 (c) 降低复杂性,除了像这样的错误答案'R 不适合大型数据集'。

      A) 如果可以划分您的计算(例如,您的问题在于大量计算,但您只是编写结果),则其中一种解决方案是并行计算。例如,使用foreachdoparallel 包,观察许多时间网络比使用“正常”串行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 相比并不是很大)。

      【讨论】:

      • 谢谢两位的回答!我会尝试推荐的方法,然后告诉你哪种方法效果最好!祝你有美好的一天!
      猜你喜欢
      • 2017-09-24
      • 1970-01-01
      • 2023-04-02
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多