在进行大数据相关的应用开发时,开发人员对编程语言的选择相当有限。Python和R获得了数据科学家的青睐,而Java则是Hadoop开发人员的不二之选。随着Apache Spark和Apache Kafka这样基于Scala的大数据框架的崛起,相信Scala会逐步映入大数据从业者的眼帘。

Scala是JVM上的一种函数式编程语言,最初它是由Martin Odersky在15年之前开发的,那时还没有大数据这个概念。Scala的拥护者们认为Scala的主要优势是速度和它的表达性。现在Scala主要是Web 2.0公司和社交媒体公司在用,比如Foursquare和Twitter。2009年Twitter把大部分后台系统的开发语言从Ruby换成了Scala。

spark用什么语言写的 spark是用什么语言_spark用什么语言写的

Apache Spark的出现无疑推动了Scala在大数据领域的地位。多数第一代Hadoop应用都需要开发人员具备Java开发能力,而Spark为开发人员提供了另一种选择。其实Spark就是用Scala写成的,不过它同时支持Scala、Java、Python和R。


Apache Kafka是为大数据而设计的新一代消息系统,它和Apache Samza(流处理框架)与Scalding(Cascading的ScalaAPI)一样,也是由Scala开发而成的。

“现代且全面”
Gemini Solutions的CEO Theo Nissim是Scala的拥护者之一。Gemini位于美国硅谷,为客户提供定制的大数据工程服务。虽然Gemini并不指定客户使用什么编程语言,但Gemini的工程师们发现自己对Scala的使用越来越多了。

Nissim说:“我们近来对Scala的使用很频繁。以前我们有一些架构师比较喜欢函数式编程,而且不少人在用Scala。不过是把Scala在当Java用,他们使用Scala并不是因为它的函数式编程特性,而是因为他是一个现代且全面的语言。”

Gemini正参与一个从穿戴式设备收集数据并将分析结果展示到手机应用的项目。这个项目中大部分的工作是使用Scala完成的。Nissim表示Scala是很有潜力的编程语言,相关工具也在成熟的过程中,而且它与各种大数据基础设施都能比较好地进行结合。

Gemini并不是唯一一个在大数据项目中使用Scala的公司。根据TIOBE语言排名,Scala的排名由往常的30至50名在今天春天忽然升至25名。

Scala排名的突然上升吸引了TIOBE总裁Paul Jansen的注意。他说他早就希望在排名前20的语言中看到Scala。

“很多年以前就觉得Scala不错了,但企业界对应用Scala一直比较迟疑。这是因为Scala之前还是比较非主流,而且函数式编程语言一直被认为是学术圈的玩具语言。不过现在已经有一些跨国公司在使用Scala来进行开发了。”

Scala最常见的用处之一是在Apache Spark中开发大数据流水线。本月中旬Scala的拥护者们会聚集在美国旧金山参加Scala大会2015和海滨Scala会议。

虽然Scala看起来有成为大数据世界编程语言的潜力,但这条路恐怕不那么好走。首先Scala并不像Java和.NET一样有个有钱的大公司在背后支持。Typesafe是一家提供Scala支持的公司,而且已经募集到了数百万美元,但这跟甲骨文和微软所能提供的资源还差得很远。

其次Java本身也在变得更好,最新版的Java 8 缩小了与Scala功能上的差距,因此有人认为Java才是用于Spark开发的理想语言。

虽然Scala在TIOBE榜单上的排名又有点往下掉了,但看起来它还是会有一个光明的未来,尤其是在大数据方面的应用。