问答 百科手机端

Spark中用Scala和java开发有什么区别?

2020-12-08 22:11

很高兴回答你的问题:

由于Spark是由Scala开发的所以大家在开发Spark应用程序的时候多数会选择Scala语言,不过Spark官方网站中也给出了用java实现的实例。

1、构建系统的选择,sbt更合适用来构建Scala工程,maven更合适用来构建Java工程。

2、对于spark中的API来说,Java和Scala有差别,但差别并不大。

3、如果用Scala开发spark原型程序,可以用spark-shell“打草稿”,或者直接使用spark-shell做交互式实时查询。

4、用Scala代码量将减少甚至一个数量级,不过Scala的使用门槛较高

5、Scala 开发效率更高,代码更精简。

6、使用Spark过程中出现异常情况,在排查时如果对Spark源码比较熟悉,可以事半功倍。

7、另外Spark基本使用函数式编程,使用Java的话可能需要写一大堆匿名类,而Scala只需要一个lambda表达式。

8、Java不支持自动类型推导,RDD类基本都是范型,声明时需要写一串类类型,而Scala基本可以省略变量类型。

综上所述:

就个人体会来说,Scala相对于Java的优势是巨大的。熟悉Scala之后再看Java代码,有种读汇编的感觉……

另外,如果喜欢,可以混合Java和Scala,因为二者最终都是编译成class文件,使用Scala能够随意调用Java实现的类和方法。

从表面上看,无论采用哪种语言,都能完成一样的功能,只是代码量有多有少,开发人员根据自己的情况选择使用Java还是Scala都可。

据说目前最新的Java 8已经支持函数式接口了,Java 9也将推出Java Shell功能,慢慢地会变得和Scala一样简洁。

热门