今天给大家介绍一下如何选择大数据的编程语言?
首先,有一个大数据项目,你知道问题领域(problemdomain),我也知道使用什么基础设施,甚至可能已经决定使用什么框架来处理所有这些数据,但有一个决定还没有做出:
我应该选择哪种语言?(或者可能更有针对性的问题是,我应该迫使我所有的开发人员和数据科学家使用哪种语言?这个问题不会推迟太久,迟早会决定。
如何选择大数据编程语言?
当然,没有什么可以阻止你使用其他机制(如XSLT转换)来处理大数据工作。但一般来说,大数据有很多语言可供选择,比如Java、Python、R和Scala。那么,你应该选择什么语言呢?为什么要选择它,或者什么时候选择它? 让我们介绍一下Python和Java这两种语言。
Python
如果你的数据科学家不使用R,他们可能会完全理解Python。Python在学术界已经流行了十多年,尤其是在自然语言处理方面(NLP)等等。因此,如果你有一个需要NLP处理的项目,你将面临大量令人眼花缭乱的选择,包括经典的NTLK、使用Gensim的主题建模,或超快、准确的spacy。同样,说到神经网络,Python也很容易,包括Theano和Tensorflow;然后是scikitt,面向机器学习。-learn,NumPy和Pandas面向数据分析。
Juypter/iPython――这个基于Web的笔记本服务器框架允许您使用一个共享的日志格式来混合代码、图形和几乎任何对象。这一直是Python的杀手级功能之一,但如今,这个概念已经被证明是非常有用的,所以它出现在追求读取-读取-输出-循环(REPL)几乎所有的概念语言,包括Scala和R。
Python通常在大数据处理框架中得到支持,但与此同时,它通常不是“一流的公民”。例如,Spark中的新功能几乎总是出现在Scala/Java绑定的第一位,可能需要用Pyspark为更新版本编写几个次要版本(尤其是SparkStreaming/MLLib)。
Java
最后,Java总是不可或缺的――没有人喜欢这种语言,被遗弃了。当一家公司只通过起诉谷歌赚钱时,它似乎关心它(注:Oracle)一切都不时尚。Java只用于企业无人机!然而,Java可能非常适合您的大数据项目。想想Hadoopmapreduce,它是用Java编写的。HDFS呢?也用Java编写。甚至Storm、Kafka和Spark都可以在JVM上运行(使用Clojure和Scala),这意味着Java是这些项目中的“一流公民”。此外,还有GoogleClouddataflow(现在是ApacheBeam)等新技术,直到最近才支持Java。
Java可能不是摇滚明星喜爱的首选语言。然而,由于研发人员试图澄清Node.JS应用程序中的一组回调允许您访问一个庞大的生态系统(包括分析器、调试器、监控工具和库,以确保企业的安全性和互操作性),以及更多其他内容。大部分内容在过去20年里都经过了测试(不幸的是,Java今年已经21岁了,我们都老了)。
炮轰Java的一个主要原因是它非常繁琐和冗长,缺乏REPL(R、Python和Scala都有)。我见过基于Scala的10行Spark代码迅速变成Java编写的200行变态代码,还有巨大的语句类型,占据了屏幕的大部分空间。然而,Java8中新的Lambda支持功能对改善这种情况非常有帮助。Java从来没有Scala那么紧凑,但Java8确实让Java开发不那么痛苦。
你应该为大数据项目使用什么语言?恐怕这取决于情况。Python是跨GPUNLP或密集神经网络处理的好选择。Java绝对是一个很好的选择,如果你想要一个面向生产环境的加固数据流解决方案和所有重要的操作工具。
推荐课程:python基础语法全讲解视频(马哥教育2014版)