尚硅谷大数据技术之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 【输出目录】 【源码目录】
第二部分: