Spark为什么选择Scala
Spark为什么选择Scala
1. Scala特点
第一眼看到luxor-core中的Scala代码时(之前没有读过Scala的任何代码)就感觉非常迷茫。独特的语法和编写方式,各种各样的语法糖(如果不去看专业书籍或者Scala手册根本不明白),代码编写灵活、随意,让人触不及防。
但是不同的语言有不同的特点和各自不同优势,大部分应用程序选择语言时最关键的应该是看语言使用的类库适不适合自身; 所以如果不能深入理解Scala语言的优势,就不知道如何发挥Scala的最大优势。
Scala是一门现代化的多泛式编程语言,志在以简练、优雅以及类型安全的方式来表达常用编程模式,并且平滑集成了面向对象和函数语言的特性。Scala具有以下特点:
1) 面向对象:Scala是存面向对象的语言,从某种意义上来讲所有数值都是对象;通过class和trait关键字来描述对象的类型和行为;class的抽象可由子类化和一种灵活的机遇mixin的组合机制(可作为多重继承的简单替代方案)来扩展;
2) 函数式:Scala还是一个函数式语言,在某种意义上所有数值都是函数;Scala匿名函数提供了轻量级语法,支持高阶函数,嵌套函数等;
3) 静态类型:Scala配备了一套富有变现力的类型系统(通过类型推断避免了冗余性;通过模式匹配、组织和编写类型新方法提高灵活性),他可以以一种安全的和一致的方式呗被使用;
4) 可扩展性:Scala提供了一个独特的语言组合机制,可以更加容易的以类库的形式增加新的语言结构;
5) 于Java和.Net相相互操作:Scala设计时就考虑了与流行语言编程环境的良好交互,如Java 运行时环境Jre和.Net框架(CLR);特别是与主流面向对象语言,如Java和C#尽量无缝交互;Scala有像Java和C#一样的编译模型(独立编译,动态装载类),允许访问成千上万的高质量类库;
2. Spark为什么选择Scala
现在Spark是大数据领域的杀手级应用框架,BAT和我司等一些大公司都在使用Spark做大数据分析了。对于久经考验的Spark使用Scala的合适性已经毋庸置疑了,Spark选择Scala的原因除了语言本身以外,可能更多的构建在这语言之上的类库,社区和生态圈(包括文档和数据、衍生类库、商业支持,成熟产品等等),总结起来有以下几点:
1) Api能够做的更加优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,Api是否优雅直接影响用户体验;
2) 能够融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Hadoop生态是运行于JVM的,而Spark的崛起不是要替代Hadoop,而是要融入Hadoop生态圈;所以Spark运行也是基于JVM,因为Spark是基于Hadoop的文件系统HDFS的,通过Java中的Hadoop Api于Hadoop进行交互;
3) 速度要快:Scala是静态编译的,所以和JRuby和Groovy比起来速度会快很多,非常接近Java
4) 函数式编程:函数式编程更加适用于大数据计算模型。它摒弃了数据和状态的计算模型,着眼于函数本省,而非执行过程的数据和状态的处理。函数范式逻辑清晰、简单,非常适用用于处理基于不变数据的批处理工作;
5) 代码简练且能调用Java,开发效率非常高:可能Java 10行的代码,Scala只需要一行;
且Scala能够调用强大的Java库;
Java是纯粹面向对象语言(非函数式),所以对于大数据计算模型不太适用,且代码太冗长,不如Scala简练;Python虽然代码简练,但是性能比Scala慢,且与Hadoop交互非常糟糕,必须使用第三方库(hadoopy)。
3. Scala的缺点
正所谓,金无足赤,人无完人,Scala也存在不少的弊端;
1)学习成本较高:因为语法越来越复杂;
2)代码可读性差:正是为了做到简练,所以Scala定义了很多语法糖,这些语法糖对于不熟悉的人来说必须参考手册才能读懂;
3)程序员交替性差:Java有非常强大的模块概念规范,所以程序员交接时比较容易理解,但是Scala语法相对比较随意,所以会更难理解;
4)目前使用人群相对较少,网上资料相对较少;
- 点赞
- 收藏
- 关注作者
评论(0)