Spark为什么选择Scala

举报
雪中独狼 发表于 2020/07/07 09:28:52 2020/07/07
【摘要】 Spark为什么选择Scala1. Scala特点第一眼看到luxor-core中的Scala代码时(之前没有读过Scala的任何代码)就感觉非常迷茫。独特的语法和编写方式,各种各样的语法糖(如果不去看专业书籍或者Scala手册根本不明白),代码编写灵活、随意,让人触不及防。但是不同的语言有不同的特点和各自不同优势,大部分应用程序选择语言时最关键的应该是看语言使用的类库适不适合自身;...

Spark为什么选择Scala

1.     Scala特点

第一眼看到luxor-core中的Scala代码时(之前没有读过Scala的任何代码)就感觉非常迷茫。独特的语法和编写方式,各种各样的语法糖(如果不去看专业书籍或者Scala手册根本不明白),代码编写灵活、随意,让人触不及防。

但是不同的语言有不同的特点和各自不同优势,大部分应用程序选择语言时最关键的应该是看语言使用的类库适不适合自身; 所以如果不能深入理解Scala语言的优势,就不知道如何发挥Scala的最大优势。

Scala是一门现代化的多泛式编程语言,志在以简练、优雅以及类型安全的方式来表达常用编程模式,并且平滑集成了面向对象和函数语言的特性。Scala具有以下特点:

1)      面向对象:Scala是存面向对象的语言,从某种意义上来讲所有数值都是对象;通过classtrait关键字来描述对象的类型和行为;class的抽象可由子类化和一种灵活的机遇mixin的组合机制(可作为多重继承的简单替代方案)来扩展;

2)      函数式:Scala还是一个函数式语言,在某种意义上所有数值都是函数;Scala匿名函数提供了轻量级语法,支持高阶函数,嵌套函数等;

3)      静态类型:Scala配备了一套富有变现力的类型系统(通过类型推断避免了冗余性;通过模式匹配、组织和编写类型新方法提高灵活性),他可以以一种安全的和一致的方式呗被使用;

4)      可扩展性:Scala提供了一个独特的语言组合机制,可以更加容易的以类库的形式增加新的语言结构;

5)      Java.Net相相互操作:Scala设计时就考虑了与流行语言编程环境的良好交互,如Java 运行时环境Jre.Net框架(CLR);特别是与主流面向对象语言,如JavaC#尽量无缝交互;Scala有像JavaC#一样的编译模型(独立编译,动态装载类),允许访问成千上万的高质量类库;

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 ApiHadoop进行交互;

3)   速度要快:Scala是静态编译的,所以和JRubyGroovy比起来速度会快很多,非常接近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)目前使用人群相对较少,网上资料相对较少;

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。