0


Spark结课总结

一,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中,如下图


本文转载自: https://blog.csdn.net/2301_80215803/article/details/139031113
版权归原作者 2301_80215803 所有, 如有侵权,请联系我们删除。

“Spark结课总结”的评论:

还没有评论