大数据学习之Scala
文章平均质量分 65
介绍大数据学习中的Scala部分
Faith_xzc
PowerData联合创始人,某数据库在职,对Java和大数据感兴趣,欢迎大家交流学习!
展开
-
Spark源码阅读02-Spark核心原理之调度算法
Spark核心原理之调度算法Spark核心原理之调度算法应用程序之间作业及调度阶段之间1.创建调度池2.调度池加入调度内容3.提供已排序的任务集管理器任务之间1.数据本地性2.延迟执行3.任务执行调度算法Spark核心原理之调度算法在Spark的调度算法中,有三种粒度的调度算法。在应用程序之间可以任务执行的是有条件的FIFO策略,在作业及调度阶段提供了FIFO模式和FAIR模式,而任务之间是 由数据本地性和延迟执行等因素共同决定的。下面根据源码对这三种调度算法分别介绍。应用程序之间在独立运行模式下中原创 2021-11-14 01:24:17 · 1162 阅读 · 4 评论 -
Spark源码阅读02-Spark核心原理之消息通信原理
Spark消息通信架构在Spark中定义了通信框架接口,这些接口实现中调用了Netty的具体方法。通信框架使用了工厂设计模式,这种模式实现了对Netty的解耦,能够根据需要引入其他的消息通信工具。Spark消息通信类图如下:通信框架在上图中虚线的部分。其具体实现步骤为:①定义RpcEnv和RpcEnvFactory两个抽象类,其中在RpcEnv中定义了RPC通信框架启动、停止和关闭等抽象方法;在RpcEnvFactory中定义了创建抽象方法②在NettyRpcEnv和NettyRpcEnvFa原创 2021-11-06 09:30:26 · 1692 阅读 · 4 评论 -
Scala隐式转换
隐式转换当编译器第一次编译失败的时候,会在当前的环境中查找能让代码编译通过的方法,用于将类型进行转换,实现二次编译。隐式函数1)说明隐式转换可以在不需改任何代码的情况下,扩展某个类的功能; 使用 implicit 关键字声明为隐式函数。隐式参数普通方法或者函数中的参数可以通过 implicit 关键字声明为隐式参数,调用该方法时,就可以传入该参数,编译器会在相应的作用域寻找符合条件的隐式值。说明同一个作用域中,相同类型的隐式值只能有一个编译器按照隐式参数的类型去寻找对应类型的隐式值,与原创 2021-08-08 11:28:44 · 308 阅读 · 0 评论 -
Scala的异常处理
基本语法语法处理上和 Java 类似,但是又不尽相同。 下面是Scala的异常处理方法:(1)我们将可疑代码封装在 try 块中。在 try 块之后使用了一个 catch 处理程序来捕获异常。如果发生任何异常,catch 处理程序将处理它,程序将不会异常终止。(2)Scala 的异常的工作机制和 Java 一样,但是 Scala 没有“checked(编译期)”异常,即 Scala 没有编译异常这个概念,异常都是在运行的时候捕获处理。(3)异常捕捉的机制与其他语言中一样,如果有异常发生,catc原创 2021-08-08 11:17:31 · 1415 阅读 · 2 评论 -
Scala模式匹配
Scala模式匹配基本语法模式匹配的声明模式守卫模式匹配类型匹配常量匹配类型匹配集合匹配对象及样例类匹配对象样例类基本介绍案例实操偏函数中的模式匹配偏函数的定义基本语法原理偏函数的使用案例实操基本语法Scala 中的模式匹配类似于 Java 中的 switch 语法,但是 scala 从语法中补充了更多的功能,所以更加强大。 模式匹配语法中,采用 match 关键字声明,每个分支采用 case 关键字进行声明,当需要匹配时,会从第一个 case 分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不原创 2021-08-08 08:40:07 · 383 阅读 · 1 评论 -
Scala常用函数
基本属性和常用操作1)说明(1)获取集合长度(2)获取集合大小(3)循环遍历(4)迭代器(5)生成字符串(6)是否包含2)案例实操package chapter07object Test11_CommonOp { def main(args: Array[String]): Unit = { val list = List(1,3,5,7,13) val set = Set(23,34,423,75) //获取集合的长度 println(lis原创 2021-08-08 07:29:51 · 399 阅读 · 0 评论 -
Scala集合介绍
Scala集合介绍集合简介不可变集合继承图可变集合继承图数组不可变数组基本介绍案例实操可变数组基本介绍案例实操不可变数组与可变数组的转换基本介绍案例实操多维数组多维数组定义案例实操列表 List不可变 List基本介绍案例实操可变 ListBuffer基本介绍案例实操Set 集合不可变 Set基本介绍案例实操可变集合基本介绍案例实操Map 集合不可变 Map基本介绍案例实操可变 Map基本结束案例实操元组基本介绍案例实操集合简介1)Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有原创 2021-08-07 23:06:41 · 450 阅读 · 0 评论 -
Scala的特质(Trait)介绍
Scala的特质(Trait)基本概念特质声明基本语法特质的使用基本语法说明案例实操特质叠加基本概念案例实操特质叠加执行顺序案例说明特质自身类型说明案例实操特质和抽象类的区别基本概念Scala 语言中,采用特质 trait(特征)来代替接口的概念,也就是说,多个类具有相同的特质(特征)时,就可以将这个特质(特征)独立出来,采用关键字 trait 声明。Scala中的 trait中即可以有抽象属性和方法,也可以有具体的属性和方法,一个类可以混入(mixin)多个特质。这种感觉类似于 Java中的抽象原创 2021-08-07 10:20:23 · 1398 阅读 · 0 评论 -
Scala单例对象(伴生对象)
概念Scala语言是完全面向对象的语言,所以并没有静态的操作(即在Scala中没有静态的概念)。但是为了能够和Java语言交互(因为Java中有静态概念),就产生了一种特殊的对象来模拟类对象,该对象为单例对象。若单例对象名与类名一致,则称该单例对象这个类的伴生对象,这个类的所有“静态”内容都可以放置在它的伴生对象中声明。单例对象基本语法object Person{ val country:String="China" } 说明(1)单例对象采用 object 关键字声明(2)单例原创 2021-08-07 09:15:16 · 790 阅读 · 0 评论 -
Scala的抽象类
抽象属性和抽象方法基本语法(1)定义抽象类 abstract class Person{} //通过 abstract 关键字标记抽象类 (2)定义抽象属性 val|var name:String //一个属性没有初始化,就是抽象属性 (3)定义抽象方法 def hello():String //只声明而没有实现的方法,就是抽象方法继承&重写(1)如果父类为抽象类,那么子类需要将抽象的属性和方法实现,否则子类也需声明为抽象类(2)重写非抽象方法需要用 override 修原创 2021-08-05 16:02:07 · 409 阅读 · 0 评论 -
Scala的继承和多态
基本语法class 子类名 extends 父类名 { 类体 } 其中:(1)子类继承父类的属性和方法(2)scala 是单继承案例实操(1)子类继承父类的属性和方法(2)继承的调用顺序:父类构造器->子类构造器package chapter06object Test07_Inherit { def main(args: Array[String]): Unit = { val student1 = new Student7("ailce",12)原创 2021-08-03 22:50:21 · 979 阅读 · 0 评论 -
Scala的构造器
Scala的构造器构造器基本语法案例实操构造器参数说明案例实操构造器和 Java 一样,Scala 构造对象也需要调用构造方法,并且可以有任意多个构造方法。Scala 类的构造器包括:主构造器和辅助构造器。基本语法class 类名(形参列表) { // 主构造器 // 类体 def this(形参列表) { // 辅助构造器 } def this(形参列表) { //辅助构造器可以有多个... } } 说明:(1)辅助构造器,函数的名称 this,可以有多个,编译器通过原创 2021-08-03 22:40:14 · 821 阅读 · 0 评论 -
Scala的类和对象
Scala的类和对象概念定义类基本语法案例实操属性基本语法案例实操创建对象基本语法案例实操概念类:可以看成一个模板对象:表示具体的事物定义类基本语法[修饰符] class 类名 { 类体 } 说明 (1)Scala 语法中,类并不声明为 public,所有这些类都具有公有可见性(即默认就是public)(2)一个 Scala 源文件可以包含多个类(3)Scala 中属性和方法的默认访问权限为 public,但 Scala 中无 public 关键字。(4)private 为私原创 2021-08-02 20:51:40 · 288 阅读 · 0 评论 -
Scala包的使用
Scala包的使用定义基本语法Scala 包的作用包的命名命名规则案例实操命名规范包语句说明案例实操包对象定义说明导包说明说明注意定义基本语法package 包名 Scala 包的作用(1)区分相同名字的类(2)当类很多时,可以很好的管理类(3)控制访问范围包的命名命名规则只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。案例实操demo.class.exec1 //错误,因为 class 关键字 demo.12a //错误,数字开头 命名规范原创 2021-08-01 12:19:55 · 611 阅读 · 0 评论 -
Scala函数基础
Scala函数基础函数基本语法基本语法案例实操函数和方法的区别核心概念案例实操函数定义说明案例实操函数参数说明案例实操函数至简原则说明案例实操函数高级高阶函数案例实操匿名函数说明案例实操函数柯里化&闭包说明案例实操递归说明案例实操控制抽象说明案例实操惰性加载说明案例实操函数基本语法基本语法def sum(x: Int, y: Int) : Int = { x + y}案例实操package chapter05object Test01_FunctionAndMethod {原创 2021-07-30 22:55:49 · 291 阅读 · 0 评论 -
Scala流程控制
分支控制 if-else让程序有选择的的执行,分支控制有三种:单分支、双分支、多分支1.单分支基本语法if (条件表达式) { 执行代码块 } 说明:当条件表达式为 ture 时,就会执行{ }的代码。2.双分支基本语法if (条件表达式) { 执行代码块 1 } else { 执行代码块 2 } 3.多分支基本语法if (条件表达式 1) { 执行代码块 1 } else if (条件表达式 2) { 执行代码块 2 } …… else原创 2021-07-28 07:39:26 · 329 阅读 · 1 评论 -
Scala运算符
Scala运算符算术运算符1.基本语法2.案例实操关系运算符(比较运算符)1.基本语法2.案例实操逻辑运算符1.基本语法2.案例实操赋值运算符1.基本语法2.案例实操位运算符1.基本语法2.案例实操Scala 运算符本质算术运算符1.基本语法(1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。(2)对一个数取模 a%b,和 Java 的取模规则一样。2.案例实操package chapter03object Test01_TestOpera原创 2021-07-27 23:34:43 · 348 阅读 · 6 评论 -
Scala数值类型转换
Scala数值类型转换自动转换1.基本说明2.案例实操强制类型转换1. 基本说明2. 案例实操数值类型和 String 类型间转换1.基本说明2.案例实操自动转换1.基本说明当 Scala 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型,这个就是自动类型转换(隐式转换)。数据类型按精度(容量)大小排序为:(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算。(2)把精度大的数值类型赋值给精度小的数值类型时,就会报错原创 2021-07-26 23:36:11 · 808 阅读 · 0 评论 -
Scala数据类型
这里写目录标题定义整数类型(Byte、Short、Int、Long)1.整型分类2.案例实操浮点类型(Float、Double)1.浮点型分类2.案例实操字符类型(Char)1.基本说明2.案例实操布尔类型 ( Boolean )1.基本说明2.案例实操Unit 类型、Null 类型和 Nothing 类型1.基本说明2.案例实操定义1)Scala中一切数据都是对象,都是Any的子类。2)Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对原创 2021-07-25 23:38:30 · 515 阅读 · 2 评论 -
Scala字符串输出、键盘输入和文件操作
字符串输出基本语法(1)字符串,通过+号连接(2)printf 用法:字符串,通过%传值。(3)字符串模板(插值字符串):通过$获取变量值案例实操package chapter02object Test04_String { def main(args: Array[String]): Unit = { //(1)字符串,通过+号连接 val name: String = "alice" val age: Int = 18 println(age + "岁原创 2021-07-25 22:54:11 · 866 阅读 · 0 评论 -
Scala标识符的命名规范
定义Scala 对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符。命名规则Scala 中的标识符声明,基本和 Java 是一致的,但是细节上会有所变化,有以下三种规则:(1)以字母或者下划线开头,后接字母、数字、下划线(2)以操作符开头,且只包含操作符(+ - * / # !等)(3)用反引号``包括的任意字符串,即使是 Scala 关键字(39 个)也可以 package, import, class, object, trait, exte原创 2021-07-25 22:47:03 · 875 阅读 · 0 评论 -
Scala变量和常量
常量在程序执行的过程中,其值不会被改变的变量基本语法var 变量名 [: 变量类型] = 初始值 var i:Int = 10 val 常量名 [: 常量类型] = 初始值 val j:Int = 20 注意:能用常量的地方不用变量案例实操(1)声明变量时,类型可以省略,编译器自动推导,即类型推导(2)类型确定后,就不能修改,说明 Scala 是强数据类型语言。(3)变量声明时,必须要有初始值(4)在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变原创 2021-07-25 22:38:22 · 430 阅读 · 0 评论 -
安装scala之后,命令行中输入scala报错nullpointException
问题描述安装scala之后,命令行中输入scala,报错nullpointException问题原因环境配置不完全(已经配置了,但是缺少ClassPath)问题解决1.新建系统变量。ClassPath,编辑值为:.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar.;(注意点别忘记了)2.再次查看scala...原创 2021-07-22 12:18:36 · 1647 阅读 · 2 评论 -
Scala环境搭建
安装1. 安装jdk1.82. 下载对应的Scala安装文件scala-2.12.11.zipscala-2.12.11.zip(免费下载)3. 解压scala-2.12.11.zip(我解压到D盘下)4. 配置Scala的环境变量(1)新建系统变量SCALA_HOME,值为D:\scala-2.12.11(安装位置)(2)编辑Path,添加%SCALA_HOME%\bin(3)新建ClassPath,添加.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.原创 2021-07-19 11:32:11 · 303 阅读 · 0 评论