如何使用python和R高效而优雅地处理大数据? 举报 理由 举报 取消 题主是Python和R的初学者,最近打算帮教授做项目,但是教授说他处理的数据量非常大,R和python都不行。我看知乎上都说R处理大数据不行,他用的SAS。那么有没有高效的方法用python(或者与R结合)能够达到SAS处理大数据的能力呢?还是题主只能从头撸起SAS了?(求好心人分享SAS啊T△T) 2017年9月21日 8 条回复 1148 次浏览 Python,SAS,分析,数据,编程语言
回复 ( 8 )
SparkR可以很轻松解决这个问题。
参考原文:[译]打造大数据产品:Shiny的Spark之旅
大数据问题的分类
最近,在 Reddit 的 AMA频道 上, Hadley Wickham(RStudio首席科学家)描绘了一幅清晰的“大数据”定义。他的见解将帮助我们为SparkR和Shiny定义用例。
我认为大数据问题应分类三个主要类:
大数据小分析:数据科学家针对某一个特定的业务或研究问题从一个大的原始数据集开始做数据切片和数据抽样。
在大多数项目中,抽样结果都是小数据集,而这些项目中并不需要用到 SparkR 来驱动 Shiny应用。
分片聚合分析:数据科学家需要在多台机器上分布式地并行计算。Wickham 认为这是一个琐碎的并行化问题。一个例子就是当大规模计算时,你需要在成千上万的机器上为每一个机器都拟合一个模型。在这种情况下 SparkR 是一个不错的选择,但也可以用 R 的 foreach等包来解决这个问题。
大规模的数据分析:数据科学家需要大数据,可能是因为他们在处理一个复杂的模型拟合。这类问题的一个例子就是推荐系统。因为他们需要捕捉到用户稀疏的交互,推荐系统确实从大量数据中获益。当开发 Shiny 应用时,SparkR 可以完美解决这类问题。
内存方面的考虑
此外,当想使用这样的应用程序时,考虑内存的可用性和大小也是很重要的。这可以用两种不同的方式:
如果您正在运行的应用程序服务器上有足够的内存来满足你的大数据需求,你可能根本就不需要 SparkR 了。现在有像 Amazon AWS 一样的云提供商提供上T的计算内存。
如果你的大数据不能装在一台机器上,您可能需要分配在几个机器。SparkR 适合这一问题,因为它提供了分布式算法,可以压缩不同节点数据并将结果返回给主节点。
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR 专栏:FinanceR – SegmentFault,如果涉及源代码请注明GitHub地址:harryprince (HarryZhu) · GitHub。微信号: harryzhustudio
商业使用请联系作者。
先处理,再优雅吧
最重要的是你老师的数据集究竟有多大,以及你的电脑的配置。
8g左右或以下的,用个配置稍好电脑python,r都带得动。
数据量再往上走,就该考虑设计一下算法,主动管理内存,甚至动用硬盘管理数据(比如把中间数据存到硬盘上,下次使用再加载到内存)。
数据量上tb了,就可以考虑集群了。
考虑到你的老师在用SAS,那我猜测数据量是单机可以搞定的。因此python也是能解决问题的,但是你需要主动设计一下算法并主动管理内存空间。
有什么是一块内存条解决不了的问题,那就上两块。。。不知道你的数据有多大。我的一般不超过30g 所以内存条是最简单粗暴有效的解决方案。
如果python r解决不了 那不是语言问题而是你架构问题。先试着解决问题 碰壁了再想搭建大数据的架构吧。
首先,我不是很同意,Python不能达到SAS处理数据的量。SAS的数据文件就一个单个文件,能大到哪里去呢?
如果真不想学SAS,看看如何在分布式环境下跑Python吧。
先练习大基本功,当你熟悉了一种语言,随便Python, Java, Scala, C++或者R。到了一定境界才能谈得上优雅!
这就是为什么职业篮球运动员要不断坚持力量和投篮技巧,大基本功到位了,才能谈手感、状态和战术等高阶词汇。
以上。
我个人觉得 这个问题你应该问你们教授或者你们学校stat的faculty 而不是来知乎上问………
请关注 pyodps。在 还有试用。