r - R 遇到致命错误并终止;在我导出 500GB 数据并且从那时起无法读取任何文件之后
问题描述
我试图处理一批 Himawari-8 数据并将它们导出到我想要的 tif 文件中。我使用的代码如下:
library(raster)
library(ncdf4)
library(rgdal)
library(DoParallel)
library(foreach)
lst <- list.files(path="D:\\0619\\",pattern='nc$',full.names=TRUE)
detectCores()
usecores <- detectCores-10
cl <- makeCluster(usecores)
registerDoParallel(cl)
foreach(i =1:143) %dopar% {
library(raster)
library(ncdf4)
library(rgdal)
nc<-nc_open(lst[3])
r1<-raster(lst[i],
var='albedo_01')
r2<-raster(lst[i],
var='albedo_02')
r3<-raster(lst[i],
var='albedo_03')
r4<-raster(lst[i],
var='albedo_04')
rg <-0.6321*r2+0.2928*r3+0.0715*r4
rr <- brick(r3,rg,r1)
name <- strsplit(lst[i],"\\_")
tifname <- paste("H8_VIS_",name[[1]][3], "_",name[[1]][4],"_FLDK",sep="")
rw <- writeRaster(rr,filename = paste("E:\\H8_VIS_data\\20190619\\", tifname, ".tif", sep=""),
format = 'GTiff')
}
stopCluster(cl)
此代码适用于我的 PC 并导出近 500GB 数据。一天,出错了,报错
R encoutered a fatal error
The session was terminated
我寻找解决方案,尝试卸载 R 和 RStudio,删除我能找到的所有 R 文件,重新启动 PC 并在 conda 中安装 R & RStudio。然后,它适用于一口井。在我处理两个 H-8 netcdf 数据(每个 600MB)之后。R再次崩溃并报告了同样的错误。################################################# ##################
我认为这是我的 PC 没有足够的 RAM,所以我在一台非常高性能的计算机上运行它。导出大约500GB数据后,R报错:
error in unserialize(socklist[[n]]): error reading from connection
然后我停止并行运行代码,导出两个结果后,R崩溃并显示
R encoutered a fatal error
The session was terminated
而且这台高性能计算机上的 R 不能再工作了。我用过gc()
,还是不行。我认为在我的数据处理过程中,一些垃圾存储在某个地方,它们超过了 R 的存储。
请告诉我如何解决这个问题。非常感谢!
#######
我只是发现,从一个文件中读取光栅不会终止。
r1 <- raster("D:/0619/h8_201906190000.nc",var = 'albedo_1')
从列表中读取文件时将终止。(我这次没有要求并行化,只是因为这两个代码而爆炸。)
list <- list.files(path="D:\\0619\\",pattern='nc$',full.names=TRUE)
r1 <- raster(list[1],var = 'albedo_1')
解决方案
推荐阅读
- android - ViewPager2 setCurrentItem 方法抛出错误
- excel - excel 指向许多文件夹中已关闭工作簿的外部链接
- css - 如何在语义 UI 中对齐两个项目?
- node.js - 无法从 Heroku 上的 package.json 从 github 安装 npm 包
- sql-server - 为什么在调试模式下运行父包时,子 SSIS 包的 .dtsx 文件会在 BIDS 中打开?
- python - 使用 Vimeo API 时出现 SSL 上传错误
- python - 如何解决无法使用 Python 应用程序连接到 Internet 时在 www.googleapis.com 上找到服务器
- vega-lite - 带有填充编码的标记条形图不考虑排序
- atom-editor - 我的 snippets.cson 中只有前两个代码片段在 Atom 中有效
- c# - 为数据网格视图使用绑定源时设置行标记值