Spark大数据实时计算:基于Scala开发实战
上QQ阅读APP看书,第一时间看更新

1.1 Scala语言的特色

Scala语言最初并没有引起开发者的重视,但随着“大数据时代”的到来,人们发现两个大数据处理框架Spark和Kafka竟都是用Scala语言开发出来的。至此,Scala这门“沉睡”已久的语言逐步进入大数据开发者的眼帘。

Scala语言表达能力强,能用少量代码实现需要用大量Java代码才能实现的功能。比如,我们要创建一个学生类,属性包括学生学号、学生姓名、学生年龄、班级信息。要实现这个功能,Java代码如下。

public class Student { //学生类
 private int studentNum;      //学生学号
 private String studentName;  //学生姓名
 private int studentAge;      //学生年龄
 private String classInfo;    //班级信息
 
    public int getStudentNum() {
        return studentNum;
    }  
  
    public void setStudentNum(int studentNum) {
        this.studentNum = studentNum;
    }  
  
    public String getStudentName() {
        return studentName;
    }  
  
    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }  
  
    public int getStudentAge() {
        return studentAge;
    }  
  
    public void setStudentAge(int studentAge) {
        this.studentAge = studentAge;
    }  
  
    public String getClassInfo() {
        return classInfo;
    }  
  
    public void setClassInfo(String classInfo) {
        this.classInfo = classInfo;
    }  
  
    /** 
     * 重写toString 方法 
     * @return String 
     */  
    @Override  
    public String toString() {
        return "Student{" +
                "studentNum=" + studentNum +  
                ", studentName='" + studentName + '\'' +  
                ", studentAge=" + studentAge +  
                ", classInfo='" + classInfo + '\'' +  
                '}';  
    }  
}  

要实现与上面Java代码相同的功能,Scala代码如下。

case class Student(  var studentNum:int,  var studentName:String,  var studentAge:int,   var classInfo:String)   //学生类

可以看到,Scala代码更为简洁,可以极大地提高开发效率。此外,Scala兼容Java,可以访问庞大的Java类库。我们在Scala中调用Java程序的Scanner类并进行对话,代码如下。

scala> import java.util.Scanner
import java.util.Scanner
  
// 光标出现后输入 hello scala  
scala> println("hello world :" + new Scanner(System.in).nextLine())
hello world :hello scala