尚硅谷大数据技术之Scala(韩顺平)

第一章:Scala概述

一.Scala背景

大数据三个问题

1.数据采集

2.数据存储(HBase)

3.数据计算(Spark,Flink,Mapreduce……)。计算分两种

1.离线计算:MapReduce;

2.实时计算:Spark(内存级大数据计算框架)

Scala是多范式编程语言,多种编程方式

1.面向对象

2.函数式

Scalable Language

Spark的兴起带动了Scala

发明者Martin Odersky主写Java 1.5与Java8编译器,从Pizza和Scala里引入大量特性到Java

Scala程序目的是高效、简单,少些代码。递归是达到这个目的的重要手段

Scala有以下特性

1.可以使用Java部分语法

2.Scala特有语法

3.增加函数式编程

1.偏函数

2.函数柯里化

3.高阶函数

4.纯函数

5.函数作为参数

……

4.Scala类可以是对Java形式上的一种包装(继承,实现接口等)

Scala天生语法层面支持并行计算,可以较好的用于大数据计算开发

二.Scala特点

1.多范式静态编程语言

2.运行在JVM上

3.简洁高效,删除了三目、++、--运算符

快速学习办法:

1.学习Scala特有语法

2.搞清楚与Java区别

3.如何规范使用Scala

三.搭建环境

Windows:1.安装JDK 2.安装Scala程序安装包 3.配置环境变量SCALA_HOME为scala安装路径,并把bin目录加到Path里

Linux:也类似,解压tar包,设置PATH环境变量

Idea Scala插件安装:搜索Scala插件安装

四.Scala快速入门

object HelloScala{
      def main(args: Array[String])  :Unit={
             println("hello scala)  
      }
}

object表明一个伴生对象,ojbect 对象名,生成一个“HelloScala$”的伴生匿名类,这个类的静态对象名字叫做MODULE$

先从HelloScala类的main方法执行,会调用HelloScala$.MOUDLE$里的同名方法接着执行

这里可以看到Scala对Java类的包装

Scala认为静态的不是面向对象,所以class里没有,静态的放object里

关键字def定义一个方法

Scala将参数名放前边,类型放后边,用:分隔

Array[String]表示类型为String数组

Unit为空

函数签名与返回结果用:隔开

一般scala可以执行javac编译出来的class文件,java不能执行scalac编译出来的class文件,可能会少类引用

scala可以直接编译、运行scala文件一步走

五.Idea创建Scala项目

1.创建一个原生maven项目

2.main目录下创建一个scala文件夹,标记为Source Root

3.默认不能写Scala程序,点击项目名,点击“Add Framework Support”,选Scala

4.创先新Scala文件。有三种类型,Class,Object,Trait

 五.Java模拟Scala快速入门程序

 总而言之,就是使用一个内部类,里边有个静态对象,这个静态对象的代码与scala里写的一样,主类同名的方法调用这个单例对象的同名方法

 ojbect等同于声名一个单例的内部类静态对象

 scala给java做了一个包装

六.Scala程序总结 

1.源码后缀为scala

2.执行入口为main函数

3.Scala区分大小写

4.Scala程序不需要加分号

5.同一行多个语句,要用分号隔开

七.Scala转义字符与Java一样

八.字符串输出三种方式

1.用+相连

2.printf

3.s""这种形式,直接在s引导的双引号里用$引用变量。{}包起来表明是个表达式,里边可以直接计算

九.关联Scala源码

Ctrl+b查看源代码

Ctrl+Alt+l格式化代码

源码包要引入,maven可以直接下载

十.注释

三种注释格式

1.单行注释

2.多行注释

3.文档注释

每个函数都要有个注释

scaladoc -d 【输出目录】 【源码目录】

第二部分: