R有许多针对数据分析的库(例如JAGS,BUGS,ARULES等),并在流行的教科书中提到,例如:J.Krusche,Doing Bayesian Data Analysis;B.Lantz,“用R进行机器学习”。
我已经看到将数据集视为大数据的5TB准则。
我的问题是:R是否适合大数据问题中常见的数据量?在具有如此大小的数据集的情况下使用R时,是否有策略要采用?
R有许多针对数据分析的库(例如JAGS,BUGS,ARULES等),并在流行的教科书中提到,例如:J.Krusche,Doing Bayesian Data Analysis;B.Lantz,“用R进行机器学习”。
我已经看到将数据集视为大数据的5TB准则。
我的问题是:R是否适合大数据问题中常见的数据量?在具有如此大小的数据集的情况下使用R时,是否有策略要采用?
Answers:
实际上这正在发生。在R in a Nutshell中,甚至有一章介绍了将R与Hadoop一起用于大数据处理。由于R在内存中完成了所有工作,因此需要做一些变通的工作,因此从根本上来说,您只能使用可用的RAM数量。
RHadoop是R和Hadoop的成熟项目
RHadoop已分为几个子项目,rhdfs,rhbase,rmr2,plyrmr和quickcheck(wiki)。
对于大型数据集使用R的主要问题是RAM约束。将所有数据保留在RAM中的原因是,与HDD上存储的存储和存储相比,它提供了更快的访问和数据处理。如果您愿意提高性能,那么可以,在R中使用大型数据集是很实际的。
这里有一些好的答案。我想通过添加以下三个注释来加入讨论:
问题的重点上的数据量,同时参照大数据是可以理解的,有效的,特别是考虑到问题的数据量增长超过了技术能力每个指数增长的摩尔定律(http://en.wikipedia.org/wiki/Moore %27s_law)。
话虽如此,重要的是要记住大数据概念的其他方面。根据Gartner的定义(重点是AB):“ 大数据是高容量,高速度和/或种类繁多的信息资产,需要新的处理方式以增强决策,洞察力和流程优化。” (通常称为“ 3V模型 ”)。我之所以提及这一点,是因为它迫使数据科学家和其他分析人员寻找并使用R包,而这些R包关注的不是大数据的数量方面(由于庞大的R生态系统的丰富性)。
尽管现有答案中提到了一些与大数据有关的R软件包,以获得更全面的介绍,但我还是建议您参考CRAN Task View “使用R进行高性能和并行计算”(http://cran.r-project。 org / web / views / HighPerformanceComputing.html),尤其是“并行计算:Hadoop”和“大内存和内存不足数据”部分。
考虑到另一个标准,我认为在某些情况下使用Python可能比R代表大数据。我知道R在数据科学教育材料中的广泛使用以及可以使用的良好数据分析库,但有时它仅取决于团队。
以我的经验,对于已经熟悉编程的人来说,与R之类的语言相比,使用Python提供了更大的灵活性和生产力提升,而R在语言方面与Python相比没有那么精心设计和强大。作为证明,在我大学的数据挖掘课程中,最好的最终项目是用Python编写的,尽管其他项目可以使用R的丰富数据分析库。也就是说,有时即使没有Python专用数据分析库,Python的整体生产率(考虑学习材料,文档等)也可能比R更好。另外,还有一些很好的文章解释了Python在数据科学中的快速发展:Python在Python中取代R和丰富的科学数据结构 可能很快就会填补R可用库的空白。
不使用R的另一个重要原因是,在处理现实世界中的大数据问题时,与学术上唯一的问题相反,非常需要其他工具和技术,例如数据解析,清理,可视化,Web抓取以及许多其他工具和技术。使用通用编程语言要容易得多。这可能就是为什么许多Hadoop课程(包括Udacity的在线课程)中使用的默认语言是Python的原因。
编辑:
最近,DARPA还投资了300万美元来帮助资助Python在大数据工作中的数据处理和可视化功能,这显然标志着Python在大数据领域的未来。(详细)
reshape2
,plyr
和现在dplyr
),而且我认为您不能做得比ggplot2
/ ggvis
可视化要好
R非常适合进行大量分析。如前所述,针对MapR,RHadoop和RStudio的可扩展版本等大数据有新的改编。
但是,如果您关心的是库,请随时关注Spark。Spark是为大数据而创建的,比单独的Hadoop快得多。它具有增长迅速的机器学习,SQL,流和图形库。这样就可以在框架内完成很多(如果不是全部)分析工作(使用多种语言的API,我更喜欢Scala),而不必在语言/工具之间打乱。
正如其他答案所指出的那样,R可以与Hadoop和其他分布式计算平台一起使用,以将其扩展到“大数据”级别。但是,如果您不特别喜欢R,而是愿意使用“类似R”的环境,那么Incanter是一个对您来说效果很好的项目,因为它是JVM(基于Clojure)的本机,并且没有在自身和R所具有的Hadop之间没有“阻抗不匹配”。就是说,从Incanter,您可以调用Java本机Hadoop / HDFS API,而无需通过JNI桥或其他任何方法。
我认为实际上在R中有大量用于处理大数据的工具。sparklyr将在该领域发挥重要作用。sparklyr是Apache Spark的R接口,允许与本地和远程集群连接,从而提供dplyr后端。还可以依靠Apache Spark的机器学习库。此外,还可以使用rmpi和snow(由用户控制)或doMC / foreach(基于系统)之类的多个软件包进行并行处理。