Reload Original PagePrint PageEmail Page

大数据:编程语言真的重要吗?

在大数据领域内,每一毫秒的性能损失都影响巨大。然而,像Python这样通常被认为性能不是太好的编程语言,在过去一年中却变得越来越流行了。大数据社区最近出现的一些文章和讨论,又一次点燃了用于数据科学以及大数据领域内的编程语言选择之争。

AdRoll的首席工程师Ville Tuulos认为编程语言本身的性能其实并不重要。Ville于2013年9月在旧金山将自己的调查发现发布到了一个meetup组中,向我们展示了AdRoll中使用的基于Python构建的后端架构,以及它们是如何在性能上超过那些业界中的巨头(例如Amazon的Redshift)的。他们获得成功的关键是,整个系统是基于他们自己非常特殊的用例而构建的,因此可以针对那种用例进行优化。正如Ville所说:

不管通用解决方案是采用何种编程语言实现的,你都可以使用一种高级编程语言来快速地实现出一个性能比通用方案更好的,应用于特定领域的解决方案。

但这并不意味着编程语言一点都不重要。最近有不少关于哪种语言最适合数据科学和大数据领域的争论,而这一殊荣最有力的竞争者就是Python和R语言。一些人甚至把它说成是数据科学领域内的一场战争。在LinkedIn上面也有针对这一话题的讨论,看上去大家的普遍共识是,R语言是一种学术性语言,“对数据科学家而言,R语言的优势在于它所提供的大量的包以及其多样性”。

但是对于海量数据处理这一块,总体说来Python受到更多程序员的青睐,正如来自Dish Network的数据科学家Tom Rampley所说:

我经常使用R语言的各种包中所提供的统计功能。我还使用它在小规模的数据集上面执行各种数据操作。但是对于文本解析、大数据集上的数据操作以及编写自己的算法这些任务来说,我更加喜欢使用Python并结合使用它的NumpyScipyPandas这些包。

在最近几个月里,Python似乎在各个方面都要更胜一筹,正如Karissa McKelvey在2013年10月所写的那样,“我的数据太大了,无法装载到R语言中”,还有Matt Asay也声称,“在数据科学的博士们中间,R语言仍然很受欢迎,但是随着数据逐渐成为主流,Python正在接替R语言的地位”。

语言自身的性能常常是我们在开发复杂架构时决定到底使用哪种语言的一个关键因素,而且这一因素常常被过度夸大。实际上真正重要的是我们如何使用一种语言,正如Linus Torvalds所说,“低水平的程序员总在关心代码,而高水平的程序员则关注数据结构及其关系。”

Cloudera公司最近的一个开源项目Impala为例,它的目标是替代Hive,使查询速度提高一个数量级。他们选择使用了C++,而其他所有的Hadoop架构都是基于Java的,这种开发语言上的转变经常被冠以某些与性能相关的原因。但实际上这里的性能提升不是简单地来自从Java到C++的转换。Impala甚至没有使用MapReduce,而是直接在内存中缓存数据,所以很显然,这里的性能改善主要源于它采用了带有不同数据结构和限制的一个完全不同的范型。这里由Java到C++的转换只是一种锦上添花的工作,并不会对性能的改善起到雪中送炭的作用。

查看英文原文:Big Data: Do Languages Really Matter?


感谢臧秀涛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。