![](https://img-blog.csdnimg.cn/af743da8f3ca4c39a8215209d6c0818f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
bigdatav015——scala
BigDataScala
yanqi_vip
strove with none, for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
展开
-
CC00001.scala——|Hadoop&Scala.V01|——|Scala.v01|实验大纲|
一、Scala编程:### --- 课程目标:~~~ 熟练使用Scala进行Spark开发~~~ 为阅读Spark内核源码做准备二、课程内容:### --- 课程内容:~~~ 第一部分 Scala基础~~~ 第二部分 控制结构和函数~~~ 第三部分 数组和元组~~~ ...原创 2022-04-11 19:28:00 · 82 阅读 · 0 评论 -
CC00002.scala——|Hadoop&Scala.V02|——|Scala.v02|Scala基础|语言概况|
一、Scala基础### --- Scala语言概况:Scala语言起源~~~ 马丁·奥德斯基(Martin Odersky)是编译器及编程的狂热爱好者。~~~ 主流JVM的Javac编译器就是马丁·奥德斯基编写出来的,JDK5.0、JDK8.0的编译器就是他写的。~~~ 长时间的编程之后,他希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。...原创 2022-04-11 19:29:00 · 106 阅读 · 0 评论 -
CC00003.scala——|Hadoop&Scala.V03|——|Scala.v03|Scala编程|编程环境|
一、scala官网地址### --- Scala资源地址~~~ Scala官网:https://www.scala-lang.org/~~~ 下载Scala:Windows下安装Scala~~~ 配置IDEA开发环境:REPL二、windows下环境配置说明### --- 下载scala版本包~~~ 访问Scala官网下...原创 2022-04-11 19:29:00 · 221 阅读 · 0 评论 -
CC00004.scala——|Hadoop&Scala.V04|——|Scala.v04|Scala编程|基本语法|
一、基础语法### --- 基础语法规则:~~~ # 区分大小写~~~ Scala语言对大小写敏感;~~~ # 类名~~~ 对于所有的类名的第一个字母要大写。~~~ 如果需要使用几个单词来构成一个类名,每个单词的第一个字母要大写;比如:ListDemo~~~ # 方法名~~~ 所有方法名的第一个字母用小写。...原创 2022-04-11 19:30:00 · 47 阅读 · 0 评论 -
CC00005.scala——|Hadoop&Scala.V05|——|Scala.v05|Scala编程|常用类型|字面值|
一、常用类型与字面量数据类型描述Byte8位有符号补码整数。数值区间为 -128 到 127Short16位有符号补码整数。数值区间为 -32768 到 32767Int32位有符号补码整数。数值区间为 -2147483648 到 2147483647Long64位有符号补码整数。数值区间为 -9223372036854775808 到9...原创 2022-04-11 19:31:00 · 146 阅读 · 0 评论 -
CC00006.scala——|Hadoop&Scala.V06|——|Scala.v06|Scala编程|类层次结构|
一、类层次结构## --- 类层次结构~~~ # Scala中,所有的类,包括值类型和引用类型,都最终继承自一个统一的根类型Any。~~~ # Scala中定义了以下三个底层类:~~~ Any是所有类型共同的根类型,Any是AnyRef和AnyVal的超类~~~ AnyRef是所有引用类型的超类~~~ AnyVal是所有值类型的超类...原创 2022-04-11 19:32:00 · 49 阅读 · 0 评论 -
CC00007.scala——|Hadoop&Scala.V07|——|Scala.v07|Scala编程|值与变量|自动类型推断|
一、值与变量&自动类型推断### --- Scala当中的声明变量可以使用以下两种方式:~~~ val,值 -- value,用val定义的变量,值是不可变的~~~ var,变量 -- variable,用var定义的变量,值是可变的### --- 在Scala中,鼓励使用val。大多数程序并不需要那么多的var变量。~~~ 声明变量时...原创 2022-04-11 19:33:00 · 64 阅读 · 0 评论 -
CC00008.scala——|Hadoop&Scala.V08|——|Scala.v08|Scala编程|操作符|
一、操作符### --- 操作符~~~ Scala的算术操作符、位操作符与 Java中的效果一样的。~~~ 需要特别注意一点:Scala中的操作符都是方法~~~ 书写时推荐使用:a + b 、1 to 10这种代码风格。~~~ Scala 没有提供 ++、-- 操作符,但是可以使用+=、-=### --- a + b 等价 a.+(b)...原创 2022-04-11 19:33:00 · 54 阅读 · 0 评论 -
CC00009.scala——|Hadoop&Scala.V09|——|Scala.v09|Scala编程|块表达式|赋值语句|
一、块表达式和赋值语句### --- 块表达式和赋值语句~~~ {} 块包含一系列表达式,其结果也是一个表达式,块中最后一个表达式的值就是块的值。~~~ 赋值语句返回Unit类型,代表没有值;### --- 编程需求val x1 = 1val y1 = 1val x2 = 0val y2 = 0val distance = {val dx = ...原创 2022-04-11 19:34:00 · 49 阅读 · 0 评论 -
CC00010.scala——|Hadoop&Scala.V10|——|Scala.v10|Scala编程|输入输出|
一、输入和输出### --- 输入输出说明~~~ 通过readLine 从控制台读取一行输入。~~~ 如果要读取数字、Boolean或者字符,~~~ 可以用readInt、readDouble、readByte、readShort、readLong、readFloat、readBoolean或者readChar。### --- 输入输出编程语法...原创 2022-04-11 19:34:00 · 60 阅读 · 0 评论 -
CC00011.scala——|Hadoop&Scala.V11|——|Scala.v11|Scala编程|字符串插值器|
一、字符串插值器### --- Scala 提供了三种字符串插值器:~~~ s 插值器,对内嵌的每个表达式求值,对求值结果调用toString,替换掉字面量中的那些表达式~~~ f 插值器,它除s插值器的功能外,还能进行格式化输出,在变量后用%指定输出格式,使用java.util.Formatter中给出的语法~~~ raw 插值器,按照字符串原样进行...原创 2022-04-11 19:34:00 · 81 阅读 · 0 评论 -
CC00012.scala——|Hadoop&Scala.V12|——|Scala.v12|Scala编程|对象相等性|
一、对象相等性### --- Java 中可以 == 来比较基本类型和引用类型:~~~ 对基本类型而言,比较的是值的相等性~~~ 对引用类型而言,比较的是引用相等性,即两个变量是否指向JVM堆上的同个对象### --- Scala中,要比较两个基础类型的对象是否相等,可以使用 == 或 !=;1 == 11 != 22 == 2~~~ ...原创 2022-04-11 19:35:00 · 62 阅读 · 0 评论 -
CC00013.scala——|BigDataEnd|
NO:Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ...原创 2022-04-11 19:35:00 · 45 阅读 · 0 评论 -
CC00014.scala——|Hadoop&Scala.V01|——|Scala.v01|Scala函数|if表达式|
一、if 表达式### --- if表达式~~~ Scala中 if 表达式有返回值。~~~ 如果if 和 else 的返回值类型不一样,那么就返回两个返回值类型公共的父类。### --- 编程示例~~~ # if 语句有返回值val x = 10val s = if (x > 0)1else-1~~~ # 多分支...原创 2022-04-11 19:36:00 · 236 阅读 · 0 评论 -
CC00015.scala——|Hadoop&Scala.V02|——|Scala.v02|Scala函数|for表达式|
一、for 表达式### --- for表达式~~~ Scala中,for循环语法结构:for (i <- 表达式 / 集合),让变量 i遍历<-右边的表达式/集合的所有值。~~~ Scala为for循环提供了很多的特性,这些特性被称之为 for守卫式 或 for推导式。### --- 编程示例~~~ # 基本结构。使用to实现左右...原创 2022-04-11 19:37:00 · 86 阅读 · 0 评论 -
CC00016.scala——|Hadoop&Scala.V03|——|Scala.v03|Scala函数|where表达式|
一、while 表达式### --- while表达式~~~ Scala提供了与 Java 类似的while和do...while循环。~~~ while语句的本身没有任何返回值类型,即while语句的返回结果是Unit类型的 () 。~~~ Scala内置控制结构特地去掉了 break 和 continue。### --- 特殊情况下如果需要终...原创 2022-04-11 19:37:00 · 115 阅读 · 0 评论 -
CC00017.scala——|Hadoop&Scala.V04|——|Scala.v04|Scala函数|函数|
一、函数### --- 函数~~~ 函数体中最后一句为返回值的话,可以将return 去掉;~~~ 如果一个函数体只有一句代码,大括号可以去掉;~~~ 如果一个函数没有返回值,其返回类型为Unit , 并且 “=” 号可以去掉,这样的函数被称为过程;~~~ 可以不声明函数的返回类型,返回类型可通过自动类型推断来完成,~~~ ...原创 2022-04-11 19:38:00 · 71 阅读 · 0 评论 -
CC00018.scala——|Hadoop&Scala.V05|——|Scala.v05|Scala函数|懒值|
一、懒值### --- 懒值~~~ 当 val 被声明为lazy时(var不能声明为lazy),~~~ 它的初始化将被推迟,直到首次对此取值,适用于初始化开销较大的场景。### --- 编程示例~~~ 先打印OK!,才报错~~~ # 语句立刻执行,发现文件不存在,报错val file1 = scala.io.Source.fromF...原创 2022-04-11 19:39:00 · 60 阅读 · 0 评论 -
CC00019.scala——|Hadoop&Scala.V06|——|Scala.v06|Scala函数|文件操作|
一、文件操作### --- 导入scala.io.Source后,可引用Source中的方法读取文本文件的内容~~~ 如果要将文件内容转数组,直接调用toArray。import scala.io.{BufferedSource, Source}object FileDemo { def main(args: Array[String]): Unit = {...原创 2022-04-11 19:39:00 · 84 阅读 · 0 评论 -
CC00020.scala——|BigDataEnd|
NO:Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ...原创 2022-04-11 19:40:00 · 42 阅读 · 0 评论 -
CC00021.scala——|Hadoop&Scala.V01|——|Scala.v01|数组元组|数组定义|
一、数组定义### --- 数组定义~~~ 数组几乎是所有语言中最基础的数据结构。数组可索引、类型一致、长度不变。### --- 编程示例~~~ # 长度为10的整型数组,初始值为0val nums = new Array[Int](10)~~~ # 使用()访问数据元素;下标从0开始nums(9) = 10~~~ # ...原创 2022-04-11 19:40:00 · 68 阅读 · 0 评论 -
CC00022.scala——|Hadoop&Scala.V02|——|Scala.v02|数组元组|变长数组|
一、变长数组### --- 变长数组~~~ 长度按需要变换的数组ArrayBuffer。~~~ Scala 中很多数组类型都有可变、不可变两个版本,~~~ 推荐使用不可变的数组类型,使用可变数组类型时需要显示声明;~~~ 使用ArrayBuffer时,需要导包 import scala.collection.mutable.ArrayBuff...原创 2022-04-11 19:41:00 · 61 阅读 · 0 评论 -
CC00023.scala——|Hadoop&Scala.V03|——|Scala.v03|数组元组|数组操作|
一、数组操作### --- 数组转换~~~ Array <==> BufferArray定长数组与变长数组转换~~~ toArray,变长数组转换为定长数组val array: Array[Int]=nums.toArray~~~ toBuffer,定长数组转换为变长数组val arrayBuffer: mutable.Buffer[I...原创 2022-04-11 19:41:00 · 64 阅读 · 0 评论 -
CC00024.scala——|Hadoop&Scala.V04|——|Scala.v04|数组元组|常见算法|
一、常见算法### --- 常见算法~~~ 在Scala中对数组进行转换非常简单方便,这些转换动作不会修改原始数组,~~~ 而是产生一个全新的数组。~~~ 任务:将数组中偶数元素加倍,奇数元素丢弃### --- 编程示例val arr = (1 to 10).toArray# -- 使用for推导式。注意:原来的数组并没有改变val r...原创 2022-04-11 19:42:00 · 63 阅读 · 0 评论 -
CC00025.scala——|Hadoop&Scala.V05|——|Scala.v05|数组元组|多维数组|
一、多维数组### --- 多维数组~~~ 通过Array的ofDim方法来定义一个多维的数组,多少行,多少列,都是自己说了算。### --- 多维数组示例~~~ # 创建一个3行4列的二维数组val dim = Array.ofDim[Double](3,4)dim(1)(1) = 11.11for (i <- 0 to 2; j <...原创 2022-04-11 19:42:00 · 48 阅读 · 0 评论 -
CC00026.scala——|Hadoop&Scala.V06|——|Scala.v06|数组元组|元组及操作|
一、元组及操作### --- 元组及操作~~~ Tuple,元组。Map是键值对的集合。对偶是元组的最简单形态;~~~ 元组是不同类型的值的集合,元组中的元素可以是不同的数据类型,元组在Scala中的应用非常广泛。### --- 编程示例~~~ # 报错,元组的元素个数上限是22个val a = Tuple23(1,2,3,4,5,6,7,8...原创 2022-04-11 19:43:00 · 55 阅读 · 0 评论 -
CC00028.scala——|Hadoop&Scala.V01|——|Scala.v01|类与对象|类和无参构造器|
一、类和无参构造器### --- 类和无参构造器~~~ 在Scala中,类并不用声明为public;~~~ Scala源文件中可以包含多个类,所有这些类都具有公有可见性;~~~ val修饰的变量(常量),值不能改变,只提供getter方法,没有setter方法;~~~ var修饰的变量,值可以改变,对外提供getter、setter方法;~...原创 2022-04-11 19:44:00 · 123 阅读 · 0 评论 -
CC00029.scala——|Hadoop&Scala.V02|——|Scala.v02|类与对象|自定义getter|setter方法|
一、自定义getter和setter方法### --- 自定义getter和setter方法~~~ 对于 Scala 类中的每一个属性,编译后会有一个私有的字段和相应的getter、setter方法生成。~~~ getter方法println(person age)~~~ setter方法person age_= (18)~~~ gett...原创 2022-04-11 19:45:00 · 59 阅读 · 0 评论 -
CC00030.scala——|Hadoop&Scala.V03|——|Scala.v03|类与对象|Bean属性|
一、Bean属性### --- Bean属性概述~~~ JavaBean规范把Java属性定义为一堆getter和setter方法。~~~ 类似于Java,当将Scala字段标注为 @BeanProperty时,getFoo和setFoo方法会自动生成。~~~ 使用@BeanProperty并不会影响Scala自己自动生成的getter和setter方...原创 2022-04-11 19:45:00 · 62 阅读 · 0 评论 -
CC00031.scala——|Hadoop&Scala.V04|——|Scala.v04|类与对象|构造器|
一、构造器### --- 构造器~~~ 如果没有定义构造器,Scala类中会有一个默认的无参构造器;~~~ Scala当中类的构造器分为两种:主构造器和辅助构造器;~~~ 主构造器的定义与类的定义交织在一起,将主构造器的参数直接放在类名之后。~~~ 当主构造器的参数不用var或val修饰时,参数会生成类的私有val成员。~~~ Sc...原创 2022-04-11 19:46:00 · 51 阅读 · 0 评论 -
CC00032.scala——|Hadoop&Scala.V05|——|Scala.v05|类与对象|对象|
一、单例对象### --- 单例对象~~~ Scala并没有提供Java那样的静态方法或静态字段;~~~ 可以采用object关键字实现单例对象,具备和Java静态方法同样的功能;~~~ 使用object语法结构【object是Scala中的一个关键字】达到静态方法和静态字段的目的;~~~ 对象本质上可以拥有类的所有特性,除了不能提供构造器参...原创 2022-04-11 19:47:00 · 51 阅读 · 0 评论 -
CC00034.scala——|Hadoop&Scala.V01|——|Scala.v01|继承|继承概念|
一、继承### --- 继承的概念~~~ Scala中继承类的方式和Java一样,也是使用extends关键字:class Employee extends Person{ var salary=1000}~~~ # 和Java一样,可在定义中给出子类需要而父类没有的字段和方法,或者重写父类的方法。//Person类class P...原创 2022-04-11 19:48:00 · 70 阅读 · 0 评论 -
CC00035.scala——|Hadoop&Scala.V02|——|Scala.v02|继承|构造器执行顺序|
一、构造器执行顺序### --- 构造器执行顺序~~~ Scala在继承的时候构造器的执行顺序:首先执行父类的主构造器,其次执行子类自身的主构造器。~~~ 类有一个主构造器和任意数量的辅助构造器,~~~ 而每个辅助构造器都必须以对先前定义的辅助构造器或主构造器的调用开始。~~~ 子类的辅助构造器最终都会调用主构造器。只有主构造器可以调用父类的...原创 2022-04-11 19:48:00 · 121 阅读 · 0 评论 -
CC00036.scala——|Hadoop&Scala.V03|——|Scala.v03|继承|override方法重写|
一、override方法重写### --- override~~~ 方法重写指的是当子类继承父类的时候,~~~ 从父类继承过来的方法不能满足子类的需要,子类希望有自己的实现,~~~ 这时需要对父类的方法进行重写,方法重写是实现多态的关键。~~~ Scala中的方法重写同Java一样,也是利用override关键字标识重写父类的方法。##...原创 2022-04-11 19:49:00 · 78 阅读 · 0 评论 -
CC00037.scala——|Hadoop&Scala.V04|——|Scala.v04|继承|类型检查与转换|
一、类型检查与转换### --- 类型检查与转换~~~ 要测试某个对象是否属于某个给定的类,可以用isInstanceOf方法。~~~ 如果测试成功,可以用asInstanceOf方法进行类型转换。### --- 编程示例if(p.isInstanceOf[Employee]){ //s的类型转换为Employee val s = p....原创 2022-04-11 19:50:00 · 214 阅读 · 0 评论 -
CC00038.scala——|BigDataEnd|
NO:Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ...原创 2022-04-11 19:50:00 · 53 阅读 · 0 评论 -
CC00039.scala——|Hadoop&Scala.V01|——|Scala.v01|特质|作为接口|使用特质|
一、作为接口使用的特质### --- 作为接口使用的特质~~~ Scala中的trait特质是一种特殊的概念。~~~ 首先可以将trait作为接口来使用,此时的trait就与Java中的接口非常类似。~~~ 在trait中可以定义抽象方法,与抽象类中的抽象方法一样,只要不给出方法的具体实现即可。~~~ 类可以使用extends关键字继承tra...原创 2022-04-11 19:51:00 · 72 阅读 · 0 评论 -
CC00040.scala——|Hadoop&Scala.V02|——|Scala.v02|特质|带有具体|实现特质|
一、带有具体实现的特质### --- 具体方法~~~ Scala中的trait特质不仅仅可以定义抽象方法,~~~ 还可以定义具体实现的方法,这时的trait更像是包含了通用工具方法的类。~~~ 比如,trait中可以包含一些很多类都通用的功能方法,~~~ 比如打印日志等等,Spark中就使用了trait来定义通用的日志打印方法。### ...原创 2022-04-11 19:51:00 · 56 阅读 · 0 评论 -
CC00041.scala——|Hadoop&Scala.V03|——|Scala.v03|特质|特质构造顺序|
一、特质构造顺序### --- 特质构造顺序~~~ 在Scala中,trait特质也是有构造器的,也就是trait中的不包含在任何方法中的代码。### --- 构造器以如下顺序执行:~~~ 执行父类的构造器;~~~ 执行trait的构造器,多个trait从左到右依次执行;~~~ 构造trait时会先构造父trait,如果多个trait继承...原创 2022-04-11 19:52:00 · 43 阅读 · 0 评论 -
CC00042.scala——|Hadoop&Scala.V04|——|Scala.v04|特质|特质继承类|
一、特质继承类### --- 特质继承类~~~ 在Scala中,trait特质也可以继承class类,此时这个class类就会成为所有继承此trait的类的父类。class MyUtil { def printMessage(msg: String) = println(msg)}// 特质Log继承MyUtil类trait Log extends MyU...原创 2022-04-11 19:52:00 · 55 阅读 · 0 评论