我接收包含需要在R中分析的数据的JSON文件,我使用RJSONIO软件包进行分析:
library(RJSONIO)
filename <- "Indata.json"
jFile <- fromJSON(filename)
当JSON文件超过约300MB(未压缩)时,我的计算机开始使用交换内存,并继续对JSON进行解析(从JSON中)。200MB的文件仅需要约一分钟来解析。我在Ubuntu 64位上使用R 2.14(64位),具有16GB RAM,因此我感到惊讶,在大约300MB的JSON中就已经需要交换了。我该怎么办才能读取大JSON?是否有在内存设置方面搞砸事情的东西?我已重启R并仅运行了上面的三行代码。JSON文件包含2-3列短字符串和10-20列数字(从0到1000000)。即,是行数使数据变得很大(在解析后的数据中有超过一百万行)。
更新:从评论中我了解到rjson更多地是用C完成的,所以我试了一下。一个300MB的文件,在RJSONIO中(根据Ubuntu系统监视器)达到了100%的内存使用量(从6%的基线),并继续交换,而使用rjson包只需要60%的内存,并且解析在合理的时间内完成(几分钟)。
rjson
包,它有同名函数。据说它比RJSONIO
更快。 - joran