【发布时间】:2011-11-21 18:36:07
【问题描述】:
我收到带有要在 R 中分析的数据的 json 文件,为此我使用 RJSONIO 包:
library(RJSONIO)
filename <- "Indata.json"
jFile <- fromJSON(filename)
当 json 文件大于大约 300MB(未压缩)时,我的计算机开始使用交换内存并继续解析(fromJSON)几个小时。解析一个 200MB 的文件只需大约一分钟。
我在 Ubuntu 64 位和 16GB RAM 上使用 R 2.14(64 位),所以我很惊讶在大约 300MB 的 json 中已经需要交换。
我可以做些什么来阅读大的 json?内存设置中有什么东西把事情搞砸了吗?我已经重新启动了 R 并且只运行了上面的三行。 json 文件包含 2-3 列短字符串和 10-20 列数字从 0 到 1000000。即它是大尺寸的行数(解析数据中超过一百万行)。
更新:我从 cmets 了解到 rjson 在 C 中做得更多,所以我尝试了一下。一个 300MB 的文件,使用 RJSONIO(根据 Ubuntu 系统监视器)达到 100% 的内存使用(从 6% 基线)并继续交换,使用包 rjson 只需要 60% 的内存,并且解析在合理的时间(分钟)内完成。
【问题讨论】:
-
我没有任何远程处理这么大的 json 文件的经验,但您可能会查看具有相同名称函数的
rjson包。我听说它可以比RJSONIO更快。 -
是的,rjson 包有更多的 C 代码,因此会更快并且可能更节省内存......虽然我也没有这方面的经验。
-
这里有人没有说实话(这里=包
Description)。RJSONIO实际上宣传它的速度性能:This is an alternative to rjson package. That version was too slow for converting large R objects to JSON and is not extensible, but a very useful prototype. It is fast for parsing.。现在,what 的解析速度很快 -RJSONIO或rjson?是否有任何性能测试? -
好吧,仅供参考,RJSONIO 更适合我吗?但我的只是一个
-
我知道这个问题很老了,但是对于那些正在搜索互联网的人,请看看这里发布的基准:stackoverflow.com/questions/15308435/…