1,构建系统的选择,sbt更合适用来构建Scala工程,maven更合适用来构建Java工程
2,对于spark中的API来说,Java和Scala有差别,但差别并不大
3,如果用Scala开发spark原型程序,可以用spark-shell“打草稿”,或者直接使用spark-shell做交互式实时查询
4,用Scala代码量将减少甚至一个数量级,不过Scala的使用门槛较高
建议:使用Scala构建spark作业,因为spark本身为sbt所构建,同时使用Scala开发spark作业将有助于理解spark的实现机制
Scala相对Java语法更丰富,更简洁,写起来更像脚本,能够提高开发效率。
使用Java的话代码会规范些,不过太臃肿,代码量更大。
另外Spark基本使用函数式编程,使用Java的话可能需要写一大堆匿名类,而Scala只需要一个lambda表达式。
Java不支持自动类型推导,RDD类基本都是范型,声明时需要写一串类类型,而Scala基本可以省略变量类型。
另外,如果喜欢,可以混合Java和Scala,因为二者最终都是编译成class文件,使用Scala能够随意调用Java实现的类和方法。
从表面上看,无论采用哪种语言,都能完成一样的功能,只是代码量有多有少,开发人员根据自己的情况选择使用Java还是Scala都可。
据说目前最新的Java 8已经支持函数式接口了,Java 9也将推出Java Shell功能,慢慢地会变得和Scala一样简洁。
就个人体会来说,scala相对于java的优势是巨大的。熟悉scala之后再看java代码,有种读汇编的感觉……
如果仅仅是写spark应用,并非一定要学scala,可以直接用spark的java api或python api。但因为语言上的差异,用java开发spark应用要罗嗦许多。好在带lambda的java 8出来之后有所改善。
在spark应用开发上,学scala主要好处有二:
开发效率更高,代码更精简;
使用spark过程中出现异常情况,在排查时如果对spark源码比较熟悉,可以事半功倍。
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....