你好,游客 登录
背景:
阅读新闻

Spark+Scala大数据编程入门教程(002)-Scala和Spark的关系、Spark为什么用Scala来开发?

[日期:2018-09-08] 来源:www.bigdatastudy.net  作者:艾叔 [字体: ]

1.1  ScalaSpark的关系是怎样的?

1)Scala是一门开发语言,如同C/C++/Java一样,而Spark是一个框架,它提供了一组接口,供Scala调用,使用这些接口、并按照Spark的方法进行编程,编写出的程序可以提交到集群的资源管理器上运行,Spark目前支持的资源管理器有很多,例如,它自身所带的StandaloneHadoopYARNApacheMesos以及最近很火的K8s等;

2)Spark是用Scala编写的,尽管Spark支持JavaPython等非Scala语言来调用其接口��但是,���原生、使用最方便的还是Scala语言,此外,如果要深入到Spark内部机制,阅读Spark源码的话,需要深入地掌握Scala,即使不深入Spark内部,要理解Spark提供的接口,也要掌握Scala的基本语法。因此,不管是编写Spark程序中,使用哪种语言,Scala是绕不过去的,也是必须要掌握的。

1.2  Spark为什么采用Scala开发?

很多初学者认为,Spark之所以采用Scala来开发,主要是因为Scala支持函数式编程。但实际并非如此。

Spark的论文Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing中有提到

Spark provides the RDD abstraction through a language-integrated API in Scala [5]. Scala is a statically typed functional and object-oriented language for the Java VM.We chose to use Scala due to its combination of conciseness (which is especially useful for interactive use) and efficiency (due to static typing). However, nothing about the RDD abstraction requires a functional language; it would also be possible to provide RDDs in other languages by using classes to represent the users functions, as is done in Hadoop [2].

翻译过来就是

我们选择Scala的原因是它同时具备:简洁高效这两个特点。

简洁:对于交互式使用非常有用。推断,这里的conciseness,翻译成简洁,应当是方便的意思,Scala可以直接通过Shell执行,在大数据处理的场景中,可以快速看到处理后的结果,而且很多功能往往就是一行代码就可以搞定,不需要像Java那样很多行,因此,可以开发效率会比较高(语言上的简洁+直接运行

高效Scala本质上是静态类型语言,它被编译成Java的字节码,在JVM上运行,效率和Java是差不多的,因此,是高效的。

注意

RDD的抽象并不是只有函数式语言才能做(例如Hadoop中用的就是Java),这不是选择Scala的原因。

 

原创文章,转载请注明: 转载自大数据学习网,作者:艾叔

艾叔:Scala+Spark大数据编程入门教程(001-ScalaJava比较、Scala对于初学者的缺点?

艾叔:Scala+Spark大数据编程入门教程(002-ScalaSpark的关系、Spark为什么用Scala来开发?

艾叔:Scala+Spark大数据编程入门教程(003-Scala常用数据类型、范围、及范围查看方法

艾叔:Scala+Spark大数据编程入门教程(004-ScalaSpark经典入门书籍推荐

 

收藏 推荐 打印 | 阅读: