一,spark概述
1)spark发展历史:
2)spark特点
1.快递
2.易用
3.通用
4.随处运行
5.代码简洁
3)生态圈
二,Scala基础
1)Scala特点
1.多范式编程语言
2.面向对象
3.相对于Java、c#、c++更加简洁
4.可运行于Java虚拟机,并可调用现有的java类库
5.函数式编程
6.静态类型
2)了解数据类型
1.Int:32位有符号补码整数。数值区间为−32768~32767
2.Float:32位IEEE754(IEEE浮点数算术标准)单精度浮点数
3.Double:64位IEEE754(IEEE浮点数算术标准)双精度浮点数
4.String:字符序列,即字符串
5.Boolean:布尔值,true或false
6.Unit:表示无值,作用与Java中的void一样,是不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()
1,Scala会区分不同类型的值,并且会基于使用值的方式确定最终结果的数据类型,这称为类型推断。
2,Scala使用类型推断可以确定混合使用数据类型时最终结果的数据类型。
3,如在加法中混用Int和Double类型时,Scala将确定最终结果为Double类型,如下。
1+1.5
Double = 2.5
3)定义与使用常量、变量
1,常量:
在程序运行过程中值不会发生变化的量为常量或值,常量通过val关键字定义,常量一旦定义就不可更改,即不能对常量进行重新计算或重新赋值。定义一个常量的语法格式如下:
val name: type = initialization
2,变量:
变量是在程序运行过程中值可能发生改变的量。变量使用关键字var定义。与常量不同的是,变量定义之后可以重新被赋值。定义一个变量的语法格式如下:
var name: type = initialization
4)使用运算符:
1,逻辑运算符:
1.&&:若两个条件成立则结果为真,否则结果为假
2.||:若两个条件有一个成立则结果为真,否则结果为假
3.!:对当前结果取反
2,位运算符:
1.&:参加运算的两个数据,按二进制位进行&运算,两位同时结果为1结果才为1,否则为0
2.|:参加运算的两个数据,按二进制位进行|运算,两位只要有一个为1则结果为1
3.^:参加运算的两个数据,按二进制位进行^运算,两位不同时结果为1,相同时结果为0
4.=:将右侧的值赋于左侧
5.+=:执行加法后再赋值左侧
6.−=:执行减法后再赋值左侧
7.*=:执行乘法后再赋值左侧
8./=:执行除法后再赋值左侧
9.<<=:左移位后赋值左侧
10.>>=:右移位后赋值左侧
11.&=:按位&运算后赋值左侧
12.|=:按位|运算后赋值左侧
13.^=:按位^运算后赋值左侧
14.%=:执行取余后再赋值左侧
5)定义与使用数组
1,数组是Scala中常用的一种数据结构:
数组是一种存储了相同类型元素的固定大小的顺序集合,Scala定义一个数组的语法格式如下。
var arr: Array[String] = new Array[String](num)
var arr:Array[String] = Array(元素1,元素2,…)
2,数组常用方法:
1.length:返回数组的长度
2.head:查看数组的第一个元素
3.tail:查看数组中除了第一个元素外的其他元素
4.isEmpty:判断数组是否为空
5.contains(x):判断数组是否包含元素x
6)定义与使用函数
1,函数是Scala的重要组成部分。
Scala作为支持函数式编程的语言,可以将函数作为对象。定义函数的语法格式如下。
def functionName(参数列表): [return type] = {}
Scala提供了多种不同的函数调用方式,以下是调用函数的标准格式。
functionName(参数列表)
如果函数定义在一个类中,那么可以通过“类名.方法名(参数列表)”的方式调用。
2,匿名函数
匿名函数即在定义函数时不给出函数名的函数。
Scala中匿名函数是使用箭头“=>”定义的,箭头的左边是参数列表,箭头的右边是表达式,表达式将产生函数的结果。
通常可以将匿名函数赋值给一个常量或变量,再通过常量名或变量名调用该函数。
若函数中的每个参数在函数中最多只出现一次,则可以使用占位符“_”代替参数。
3,高阶函数—函数作为参数
高阶函数指的是操作其他函数的函数。
高阶函数可以将函数作为参数,也可以将函数作为返回值。
高阶函数经常将只需要执行一次的函数定义为匿名函数并作为参数。一般情况下,匿名函数的定义是“参数列表=>表达式”。
由于匿名参数具有参数推断的特性,即推断参数的数据类型,或根据表达式的计算结果推断返回结果的数据类型,因此定义高阶函数并使用匿名函数作为参数时,可以简化匿名函数的写法。
4,高阶函数—函数作为返回值
高阶函数可以产生新的函数,并将新的函数作为返回值。
定义高阶函数计算矩形的周长,该函数传入一个Double类型的值作为参数,返回以一个Double类型的值作为参数的函数,如下
5,函数柯里化
函数柯里化是指将接收多个参数的函数变换成接收单一参数(最初函数的第一个参数)的函数,新的函数返回一个以原函数余下的参数为参数的函数。
定义两个整数相加的函数,一般函数的写法及其调用方式如下图
7)使用if判断
在实际业务中,经常需要对数据进行过滤处理,使用if判断即可满足这个需求。
Scala中的if判断根据复杂程度可分为if语句、if…else语句、if…else if…else语句、if…else嵌套语句,语法格式如下
# if语句
if(布尔表达式) { 若布尔表达式为true,则执行该语句块}
# if…else语句
if(布尔表达式) { 若布尔表达式为true,则执行该语句块}
else { 若布尔表达式为false,则执行该语句块}
# if…else if…else语句
if(布尔表达式1) {
若布尔表达式1为true,则执行该语句块
} else if(布尔表达式2) {
若布尔表达式2为true,则执行该语句块
} else if(布尔表达式3) {
若布尔表达式3为true,则执行该语句块
}else {
若以上布尔表达式都为false,则执行该语句块
# if…else嵌套语句
if (布尔表达式1) {
if(布尔表达式2) { 若布尔表达式2为true,则执行该语句块
} else if(布尔表达式3) { 若布尔表达式3为true,则执行该语句块
} else { 若布尔表达式2为false且布尔表达式3为false,则执行该语句块
}
} else { 若以上条件都为false,则执行该语句块
}
8)使用for循环
循环是指在某种条件下将一段代码按顺序重复执行。在Scala中有3种循环结构,分别为while循环、do…while循环和for循环。
for循环是相对较为常用的一种循环,for循环语法格式如下。
for(变量<- 集合) {循环语句}
多重循环是常见的for循环,多重循环也称为for循环嵌套,是指在两个或多个区间内循环反复,多个循环区间用分号隔开。
Scala可以在for循环中使用if判断过滤一些元素,多个过滤条件用分号隔开。
for循环使用yield可以将返回值作为一个变量存储,语法格式如下。
var retVar = for(var x <- List; if condition1; if condition2…) yield x
retVar是变量名,for关键字后的括号用于指明变量和条件,而yield会将每一次循环得到的返回值保存在一个集合中,循环结束后将返回该集合,并赋值给变量retVar。
使用yield对1~10的偶数进行记录,并保存至变量even中,如下图
版权归原作者 2301_80215803 所有, 如有侵权,请联系我们删除。