下面只是说说spark研发团队为什么选择scala,不是对比语言好坏。
第一:java与scala
1、当涉及到大数据Spark项目场景时,Java就不太适合,与Python和Scala相比,Java太冗长了,一行scala可能需要10行java代码。
2、当大数据项目,Scala支持Scala-shell,这样可以更容易地进行原型设计,并帮助初学者轻松学习Spark,而无需全面的开发周期。但是Java不支持交互式的shell功能。
第二:Python与Scala
虽然两者都具有简洁的语法,两者都是面向对象加功能,两者都有活跃的社区。
1、Python通常比Scala慢,Scala会提供更好的性能。
2、Scala是static typed. 错误在编译阶段就抛出,它使在大型项目中开发过程更容易。
3、Scala基于JVM,因为Spark是基于Hadoop的文件系统HDFS的。 Python与Hadoop服务交互非常糟糕,因此开发人员必须使用第三方库(如hadoopy)。 Scala通过Java中的Hadoop API来与Hadoop进行交互。 这就是为什么在Scala中编写本机Hadoop应用程序非常简单。
总之:
选择哪种语言,要看作者的个人想法着重点,当然想“玩”spark,python也是非常好的。Spark专注于数据的"transformation"和"mapping"的概念,这非常适合于完美支持像scala这样的概念的功能编程语言。 另外scala在JVM上运行,这使得更容易集成hadoop、YARN等框架。
作者:冰封
一点看法:
1、云计算平台最好还是要运行在虚拟机上,这样可以尽量避免环境不一致所造成麻烦。因此JVM是一个不错的选择。Hadoop是这么干的,spark也是。
2、JVM上面的语言中,scala确实有其独到之处,静态,编译,函数式,甚至是scala的那个interpreter。而且scala特别适合并发,这是又它函数式语言所决定的。其实我感觉spark就是受到scala语言风格启发才开发出来的。怎么说呢,平时你写scala的时候就是用map等方法处理数据的。如果你是scala用的熟练,spark一天就上手。