怎么读大json?

Chr*_*ris 15 c c++ json r

我收到了带有要在R中分析的数据的json文件,为此我使用了RJSONIO包:

library(RJSONIO)
filename <- "Indata.json"
jFile <- fromJSON(filename)
Run Code Online (Sandbox Code Playgroud)

当json文件大于约300MB(未压缩)时,我的计算机开始使用交换内存并继续解析(fromJSON)数小时.一个200MB的文件只需要一分钟就可以解析.

我在Ubuntu 64bit和16GB RAM上使用R 2.14(64位),所以我很惊讶需要交换大约300MB的json.

我怎么能读大jsons?内存设置中有什么东西搞砸了吗?我重新启动了R并且只运行了上面的三行.json文件包含2-3列短字符串,10-20列包含0到1000000之间的数字.也就是说,它是大小的行数(在解析数据中超过一百万行).


更新:从评论中我了解到rjson在C中完成的更多,所以我试了一下.带有RJSONIO(根据Ubuntu系统监视器)的300MB文件达到了100%的内存使用率(从6%基线开始)并继续进行交换,只需要60%的内存和rjson包,并且在合理的时间(分钟)内完成解析.

Wil*_*ley 6

虽然您的问题没有指定此详细信息,但您可能希望确保在内存中加载整个JSON实际上是您想要的.看起来RJSONIO是一个基于DOM的API.

你需要做什么计算?你能用流解析器吗?用于JSON的类似SAX的流式解析器的示例是yajl.