NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2014-01-26
  • 本文字数:1336 字

    阅读完需:约 4 分钟

在大数据领域内,每一毫秒的性能损失都影响巨大。然而,像 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 并结合使用它的 Numpy Scipy Pandas 这些包。

在最近几个月里,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 )关注我们,并与我们的编辑和其他读者朋友交流。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2014-01-26 08:147841

评论

发布
暂无评论
发现更多内容

Nginx主要功能及使用

爱好编程进阶

Java 面试 后端开发

Redis高可用之主从复制实践

爱好编程进阶

Java 面试 后端开发

Spring Cloud入门教程-使用Hystrix Dashboard 监控熔断器的状态

爱好编程进阶

Java 面试 后端开发

TASKCTL调度服务(主/从)代理节点的启动和停止

TASKCTL

数据仓库 kettle 调度引擎 ETL 调度任务

《零基础》MySQL 连接(四)

爱好编程进阶

Java 面试 后端开发

Tiger DAO VC:DAO组织风险投资时代来临

西柚子

STM32+华为云IoTDA,带你设计一个属于自己的动态密码锁

华为云开发者联盟

stm32 iotda 华为云IoT 密码锁 Qt框架

JAVA8之后的版本履历

爱好编程进阶

Java 面试 后端开发

Java集合框架(四)

爱好编程进阶

Java 面试 后端开发

如何成为元宇宙最初的少数人?

博文视点Broadview

SpringBoot系列:RabbitMq讲解与示例

爱好编程进阶

Java 面试 后端开发

小程序能当成 App 吗?

FinClip

RadonDB MySQL on K8s 2.1.4 发布!

RadonDB

MySQL 数据库 Kubernetes 高可用 RadonDB

Mybatis源码解析:sql参数处理,原来可以这么简单-1

爱好编程进阶

Java 面试 后端开发

SpringBoot+WebSocket实时监控异常

爱好编程进阶

Java 面试 后端开发

SSM 最简单最全面的整合Spring+SpringMVC+Mybatis三大框架 快速搭建

爱好编程进阶

Java 面试 后端开发

【并发编程系列10】阻塞队列之SynchronousQueue

爱好编程进阶

Java 面试 后端开发

【源码分析设计模式 10】SpringMVC中的建造者模式

爱好编程进阶

Java 面试 后端开发

简单实用的redis分布式锁

Rubble

4月日更 4月月更

JAVA 最常用实用的正则表达式校验

爱好编程进阶

Java 面试 后端开发

Vue 学习笔记(3)路由的基本使用 结合 SpringBoot

爱好编程进阶

Java 面试

【并发编程系列1】Thread生命周期及interrupted()作用分析

爱好编程进阶

Java 面试 后端开发

美区块链公司Espresso Systems口碑滑坡:知识产权、团队道德皆陷丑闻

小哈区块

MyCat教程【简单介绍】

爱好编程进阶

Java 面试 后端开发

Redis开发常用规范

爱好编程进阶

Java 面试 后端开发

理想汽车 x StarRocks:为 Hive 数据查询插上极速之翼!

StarRocks

大数据 数据分析 StarRocks

Spring Cloud Gateway过滤器精确控制异常返回(实战,控制http返回码和message字段)

爱好编程进阶

Java 面试 后端开发

Spring(十)

爱好编程进阶

面试 后端开发Java

阿里云视频云人脸生成领域最新研究成果入选CVPR2022

阿里云视频云

计算机视觉 视频编码 CVPR 视频云

mysql sql语句大全

爱好编程进阶

Java 面试 后端开发

MySQL最全整理(面试题+笔记

爱好编程进阶

Java 面试 后端开发

大数据:编程语言真的重要吗?_Java_Charles Menguy_InfoQ精选文章