如何判断R中的数据集何时过大?

时间:2012-10-07 08:57:46

标签: r bigdata logfile-analysis

我将在R中进行一些日志文件分析(除非我不能在R中执行),并且我理解我的数据需要适合RAM(除非我使用某种类型的修复,如接口到keyval商店,也许?)。所以我想知道如何提前告诉我的数据将占用多少空间,以及我是否有足够的空间。我知道我有多少RAM(不是很大 - 在XP下3GB),而且我知道我的日志文件最终会有多少行和列,以及col条目应该是什么数据类型(这可能需要检查为它读)。

如何将这一点整合到一个go / nogo决定中,以便在R中进行分析? (据推测,R需要能够有一些RAM来进行操作,以及保存数据!)我的即时需求输出是一堆简单的汇总统计数据,频率,意外情况等,所以我可能会写一些解析器/制表器将为我提供短期需要的输出,但我也希望在下一步中使用许多不同的方法来处理这些数据,所以我正在研究使用R的可行性。

我已经看到很多有关R中大型数据集的有用建议,我已阅读并将重读,但现在我想更好地了解如何弄清楚是否应该(a)去那里,( b)去那里但是期望必须做一些额外的事情以使其易于管理,或者(c)在为时已晚之前逃跑并在其他语言/环境中做某事(建议欢迎......!)。谢谢!

1 个答案:

答案 0 :(得分:41)

R非常适合大数据集,可以使用现成的解决方案,例如bigmemoryff package(尤其是read.csv.ffdf),也可以使用您的块处理您的内容自己的脚本。在几乎所有情况下,一点编程都使得处理大型数据集(>>内存,比如100 Gb)变得非常可能。自己做这种编程需要一些时间来学习(我不知道你的水平),但让你真正灵活。如果这是你的一杯茶,或者你需要跑步取决于你想投入学习这些技能的时间。但是一旦拥有它们,它们将使您作为数据分析师的生活变得更加容易。

关于分析日志文件,我知道从使命召唤4(计算机多人游戏)生成的统计页面通过迭代地将日志文件解析到数据库中,然后从数据库中检索每个用户的统计数据来工作。有关接口的示例,请参阅here。迭代(以块为单位)方法意味着日志文件大小(几乎)无限制。但是,获得良好的表现并非易事。

你可以在R中做很多事情,你可以用Python或Matlab,甚至是C ++或Fortran。但只有当该工具对您想要的东西提供开箱即用的支持时,我才能看到该工具优于R的优势。对于处理大数据,请参阅the HPC Task view。另见reading a very large text file in chunks的min的早期答案。其他可能对您有用的相关链接:

关于选择R或其他工具,我会说它对Google来说是否足够好对我来说已经足够了;)。