区别有:1、构建系统的选择不同;2、差别不大;3、spark-shell可以交互式实时查询;4、Scala代码更简洁。构建系统的选择,sbt更合适用来构建Scala工程,maven更合适用来构建Java工程。Scala可以与Java互操作。
1、构建系统的选择不同
构建系统的选择,sbt更合适用来构建Scala工程,maven更合适用来构建Java工程。Scala把Erlang风格的基于actor的并发带进了JVM。开发者可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序,它会自动获得多核心处理器带来的优势,而不必依照复杂的Java线程模型来编写程序。Scala可以与Java互操作。它用scalac这个编译器把源文件编译成Java的class文件(即在JVM上运行的字节码)。你可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。
2、差别不大
对于spark中的API来说,Java和Scala有差别,但差别并不大。,如果喜欢,可以混合Java和Scala,因为二者最终都是编译成class文件,使用Scala能够随意调用Java实现的类和方法。从表面上看,无论采用哪种语言,都能完成一样的功能,只是代码量有多有少,开发人员根据自己的情况选择使用Java还是Scala都可。
3、spark-shell可以交互式实时查询
如果用Scala开发spark原型程序,可以用spark-shell“打草稿”,或者直接使用spark-shell做交互式实时查询。另外Spark基本使用函数式编程,使用Java的话可能需要写一大堆匿名类,而Scala只需要一个lambda表达式。Java不支持自动类型推导,RDD类基本都是范型,声明时需要写一串类类型,而Scala基本可以省略变量类型。
4、Scala代码更简洁
Scala相对Java语法更丰富,更简洁,写起来更像脚本,能够提高开发效率。用Scala代码量将减少甚至一个数量级,不过Scala的使用门槛较高。使用Java的话代码会规范些,不过太臃肿,代码量更大。
延伸阅读:
什么是Spark?
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
文章标题:Spark中用Scala和java开发有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/36133