如何处理 R 中的大 JSON 文件?

Posted

技术标签:

【中文标题】如何处理 R 中的大 JSON 文件?【英文标题】:How to deal with big JSON file in R? 【发布时间】:2015-03-30 09:53:00 【问题描述】:

我有一个大小为 500mb 的 JSON 文件,需要在 R 中使用 fromJSON 对其进行处理。

我尝试了 bigmemory 包,但仍然失败。崩溃或达到内存限制。

我用过的一些代码是这样的

raw<- big.matrix(unlist(fromJSON("data.json")), ncol=24, type='integer', init=2, backingfile='data.bin') 

其他信息 Win 8 64bit,内存6GB,R版本3.1.3

这是 JSON 文件的一些行

["UPGRADE(ONLINE)", "20150223", "5693", "000000", "FR", "fr-fr", "STARADDICT II Plus", "4.0.4", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]

【问题讨论】:

您使用的是 64 位版本的 R 吗? 是的,我已经检查过我使用的是 64 位版本的 R 【参考方案1】:

如果数据不是太结构化(如果您可以将其放入矩阵中,那么它可能不是),可以将 JSON 预处理为 CSV 文件,然后我认为可能有更好的工具处理大型 CSV 文件而不是大型 JSON 文件。

这可能就像用换行符替换几个括号一样简单,并且可以通过命令行实用程序来完成,或者在 R 中通过逐行读取和写入来更慢地完成。您甚至可以将其直接逐行读取到 R 中,并在执行过程中解析文件的每一行。

发布您的数据样本将有助于构建更完整的答案。

【讨论】:

["UPGRADE(ONLINE)", "20150213", , "5693", "000000", "RU", "ru-ru", "Lenovo A800", "4.0.4", 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ["UPGRADE(ONLINE)", "20150223", "5693", "000000", "FR", "fr-fr", "STARADDICT II Plus", "4.0.4", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0] 除非有逗号或其他分隔符,否则这不是有效的 JSON。 [] 之间用逗号隔开,但似乎都在一行中。这是导致崩溃的原因吗? 可能,取决于您的 fromJSON 函数来自何处。 R 中有一些 json-readers。你不能将这些数据作为 CSV 文件而不是 JSON 来获取吗?另外我注意到你上面的第一行在“20150213”之后有一个空字段,这给它比第二个更多的字段,所以我看不出这将如何读入矩阵(除非你在这里手动编辑了错误的东西)。

以上是关于如何处理 R 中的大 JSON 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 json 并写入 node.js 中的文件

如何处理来自 S3 的大文件并在 Spring Batch 中使用它

如何处理 r 语言的 50GB 大 csv 文件?

如何处理特定的 json 文件以获得数据框

python正则如何处理NULL?

如何处理 NumPy 中的大整数?