Scala入门-随堂笔记

大数据常用shell脚本之分发脚本 一、前置准备 CentOS7、jdk1.8、hadoop-2.7.7 想要完成本期视频中所有操作,需要以下准备: Hadoop完全分布式集群环境搭建-视频教程 二、简单了解 basename:会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来 dirname:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录的部分) Shell数组用括号来表示,元素用空格符号分割,Shell中使用@ 或 * 可以获取数组中的所有元素 rsync是根据自己独特的算法 阅读详情

Scala简介

  • Scala源自Java
    Scala构建在JVM之上
    Scala与Java兼容、互通
  • Scala的优势
    多范式编程:面向对象编程、函数式编程
    表达能力强,代码精简
  • 大数据与Scala
    Spark采用Scala语言设计
    提供的API更加优雅
    基于JVM的语言更融入Hadoop生态圈

Scala初体验

安装及配置Scala

下载安装包:
scala-intellij-bin-2018.2.4 这里注意后面的日期数字要和已安装的IDEA版本匹配或相近

scala-2.11.12.msi 下载之后一步步安装,记住scala的安装路径
完成后配置环境变量,右击【我的电脑】-【属性】-【高级系统设置】-【环境变量】-【新建】:SCALA_HOME=安装路径,然后再PATH变量后添加%SCALA_HOME%\bin

验证scala

我们可以用win键+r打开运行,输入cmd,出现命令行,输入scala,如果出现如下情况就是配置好了
在这里插入图片描述

安装插件

打开IDEA,左上角File – Settings – Plugins,选择如下图的选项
在这里插入图片描述
然后从自己的磁盘里找到刚才下载的scala-intellij-bin-2018.2.4,确定以后会让你重启IDEA;重启完成后,创建new project,按下图所示选择
在这里插入图片描述
next之后,自行输入名称,选择SDK时要注意选择create
在这里插入图片描述
点击Browser,选择之前scala安装的路径,选好之后应该是这样在这里插入图片描述
新的项目创建好之后,右键src文件夹,new – scala class – kind选择object

HelloWorld实例

实现打印HelloWorld

object HelloWorld {
    def main(args: Array[String]): Unit = {
        println("Hello, world!")
    }
}

Scala概述

  • 面向对象特性
    每个值都是对象
    对象的数据类型和行为由类(Class)和特征(Trait,类似于interface)描述
    利用特征实现混入式多重继承
  • 函数式编程
    每个函数都是一个值
    支持高阶函数、柯里化(currying)、样例类(case class)及模式匹配……
  • Scala是静态类型语言
  • 扩展性:隐式类、字符串插值

Scala变量与常量

变量

赋值后可以改变,生命周期中可以被多次赋值
一般无需显示指定类型,Scala编译器会自动推断出类型

var VariableName : DataType [=  Initial Value]
var myVar = "Hello"

常量

赋值后不可变,类似于Java中的final变量

val VariableName : DataType [=  Initial Value]
val myVar = 10

Scala 支持多个变量的声明

val xmax, ymax = 100  // xmax, ymax都声明为100

如果方法返回值是元组,我们可以使用 val 来声明一个元组

scala> val pa = (40,"Foo")
pa: (Int, String) = (40,Foo)

使用类型别名定义变量

type关键字

type 类型别名=类型
type str=String
val name : str = "Jack"

Scala数据类型

原始数据类型

在这里插入图片描述

数据类型层次结构

在这里插入图片描述

  • Any:所有类型的超类(顶级类型)
  • AnyVal:表示值类型的超类
  • AnyRef:表示引用类型的超类,对应java.lang.Object
  • Unit:表示无值,类似Java中的void
  • Nothing:所有类型的子类
  • Null:表示null或空引用

字符串插值

s插值器:允许将变量引用、表达式直接插入字面字符中

val name="James"
println(s"Hello,$name")	//Hello,James
println(s"1+1=${1+1}") 	//1+1=2

f插值器

val height=1.9d
val name="James"
println(f"$name%s is $height%2.2f meters tall")

raw插值器

s"a\nb"		//将输出换行符
raw"a\nb"	//输出原始字符

Scala条件控制

val x=10
if(x>10){
    print("x大于10")
}else if(x==10){
    print("x等于10")
}else{print("x小于10")}

条件语句的返回值

Scala任何表达式都有返回值

val x=10
val y=if(x==10) x+1 else x	//单行表达式可以省略{}
//y=11

代码块“{…}”也是表达式,返回值为最后一个表达式结果

val x=10
val y={
   print("我是代码块")
   x+1
}//y=11

val x=10
val y={
    x+1;print("我是代码块") //多个表达式使用“;”分隔
}//y=()

Scala循环控制

while

var num: Int = 0;
while ( num < 100 ) {
    println( num );
    num = num + 1;
}

var num: Int = 0;
do {
    println( num ); 
     num = num + 5;
} while ( num < 200 }

for循环

val num:Int = 10;
for (i: Int <- 1 to num ) //包括num
{
    println(i*100)
}

for {i: Int <- 1 until 20 } //不包括20
{
    val y = 2*i
    println(y)
}

for {i<-num to 1 by -2} //设定步长为-2,即每次减2
{
	print(i)
}//输出结果为10 8 6 4 2

中断

import scala.util.control.Breaks._
var num=10
breakable{ //不套这个会抛异常
for (x<-num to 1 by -1){
	if (x<3) break
		print(s"$x\t")
	}
}

或者

val loop = new Breaks
var num=10
loop.breakable(
	for (x<-num to 1 by -1){
		if (x<7) loop.break
		println(x)
	}
)

for循环过滤

val num = 10;
for ( i: Int <- 1 to num; if i%2==0;if i>5 ) 
{ // 多个条件时使用分号
	println( i * 100 )
}

for循环返回值

for循环中的yield会把当前的元素记下来,保存在集合中,循环结束后将返回该集合;也称for推导式

val num:Int = 10;
var retVal=for (i<-1 to num;if i%2==0;if i>5) yield i;
for (a<-retVal){
    println(a);
}//输出6 8 10

Scala数组

存储固定大小的元素
数组索引从0开始

//数组创建方式一
var a1:Array[String] = new Array[String](3)
a1(0)="Jason"
a1(1)="Marie"
a1(2)="Jimmy"
//数组创建方式二
var a2=Array("Jason","Marie","Jimmy")
//数据创建方式三,区间数组
var a3=Array.range(1,10,2) //a3: Array[Int] = Array(1, 3, 5, 7, 9)

Scala之Array的方法

转载自:https://blog.youkuaiyun.com/zyp13781913772/article/details/81428862
scala之Array的方法

元组

可以包含不同类型的元素
最多支持22个元素 (Tuple1~Tuple22)
使用下划线"_“访问元素,”_1"表示第一个元素

元组的定义

//元组定义方式一
var tupleDemo = ("hello",1,2.3,1999,"scala world")
println(tupleDemo)
println(tupleDemo._4)
tupleDemo.productIterator.foreach(i=>println("value:"+i))

//元组定义方式二
var tupleDemo2 = new Tuple5("ab","bc","cd","de","ef")
    
//元组定义方式三
def mike="mike"->5->6
println(mike.getClass)

//元组定义方式四
val tpl=("zhangsan","andemen",19)
val(name, address, age) = tpl
println(name,address,age)

集合

scala.collection.immutable 不可变集合
在这里插入图片描述
scala.collection.mutable 可变集合
在这里插入图片描述

课堂小测

WordCount

scala> val stringList = List("hello world hello gree","hello java hello scala", "hello wenwen hello kb09")

scala> stringList.flatMap(x=>x.split(" ")).map(x=>(x,1)).groupBy(x=>x._1).map(x=>(x._1, x._2.size))
Spark原生大数据迁移数据校验框架设计与实践 数据校验是大数据迁移中保障数据质量的核心环节,其本质是将模糊的业务承诺转化为可执行、可量化、可追溯的机器验证规则。基于Apache Spark构建的校验框架,依托DataFrame原生计算能力,避免driver端单点瓶颈,支持行数一致性、主键唯一性、字段分布、数值精度、空值模式、业务逻辑及数据新鲜度等多维度断言。该方案直面迁移场景特有的语义漂移、时区偏移、精度丢失与分区错位等隐性风险,强调规则声明式配置、动态加载与流水线深度嵌入,显著提升Big Data Migration Workloads的质量可控性与 阅读详情

相关推荐

scala-intellij-bin-2018.2.1.zip

中scala插件,scala--bin-2018.2.1.zip。已经更改积分。

Scala在window上安装及基本概述(变量,数据类型,插值器,条件循环,数组,元祖,集合)

Scala一.Scala安装1.windows安装Scala2.在idea中使用Scala二.Scala简介1.Scala概述三.Scala变量与数据类型1.Scala变量与常量2.Scala关键字列表3.scala数据类型(1)Scala与Java有着相同的原始数据类型(2)scala数据类型层次结构4.字符串插值(1)s插值器(2)f插值器(3)raw插值器四.Scala程序控制1.Scala条件控制(1)if语句(2)if...else语句(3)条件语句返回值2.scala循环控制(1)while循环

May_J_Oldhu的博客 1161

scala-intellij-bin-2018.1.8.zip

idea的scala插件,解压缩后吧scala文件夹放到idea安装文件夹下的plugins文件夹中即可。idea只有安装该插件后才可以使用scala编程

scala安装及idea配置scala插件

前提:windows已安装好jdk,可参考 jdk安装和配置 1、下载好scala在windows上的安装包,后缀为.msi,下载网址为 scala下载 下载windows系统的安装包 2、然后就可以进行scala安装,安装位置默认为 C:\Program Files\scala-2.13.3.msi 3、配置环境变量 鼠标右键点击我的电脑 >>属性 >>高级系统设置 >>环境变量 >>(系统变量) 在PATH路径中添加 %SCALA_HOME%\bin %S

xiaoxionghanhan的博客 575

一个基于ZYNQ、AXI接口的PL端卷积加速器,可由PS端调用(附Github源码)

一个基于ZYNQ,AXI接口的PL端卷积加速器,可由PS端调用开发板型号:Zynq-7000 SoC XC7Z305 FPGA开发平台:Vivado 2019.1;Github源码链接:https://github.com/CY0807/ZYNQ_PL_CONV_ACC。

跳跳骑士的博客 1305

Python海康相机api---超简单入坑学习必看

海康官网下载相机驱动​安装好以后找到Python的开发文件目录参考:D:\MVS\MVS\Development\Samples\Python\MvImport这几个文件很重要,想调用海康相机取图会用到.​为了写代码方便可以把这几个文件拷贝一下,跟你的api主文件放在同一个文件夹下可以减少80%的烦恼.​。

weixin_59360687的博客 3477

Scala2.11安装——windows以及IntelliJ IDEA 2018.2.2版本Scala插件安装(有安装包下载链接)

Scala安装——windows Scala----windows安装文件及IDEA 2018.2.2插件: 1、scala-2.11.12.msi 2、scala-intellij-bin-2018.2.4.zip 下载链接:https://pan.baidu.com/s/1WkK4cp91Ov5p4HjysHhZ5w 提取码:xaiz 1、双击 scala-2.11.12.msi 进行安装: 一直点击next 记住安装地址 右击我的电脑----属性----高级系统设置----环境变量----Path

Mr_Bright的博客 2771

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

泛红尘的博客 2996

Scala面向对象——随堂笔记

Scala OOP类类成员访问修饰符类的定义类的继承抽象类单例对象定义单例对象伴生特质混入特质 mixin动态混入特质特质与抽象类的选择内部类样例类 类 类通过class关键字定义 类通过new关键字创建实例 类拥有成员变量和方法 类的成员默认为public,也支持private、protected 类中无法定义静态成员变量和方法 类无需明确定义构造方法,通过构造参数列表声明为类的一部分 类成员访问修饰符 类的定义 构造器:主构造器,辅助构造器 成员的变量和方法 //主构造器执行类定义中的所有语句

Helltaker的博客 221

RIGOL DS1102E示波器新手必看:从开机到捕获第一个波形的5分钟指南

本文为RIGOL DS1102E示波器新手提供了一份快速上手指南。内容涵盖从开机、探头校准到捕获第一个波形的完整流程,重点解析了触发设置、自动测量等核心操作,并指出了探头衰减比设置等常见误区,帮助用户快速掌握这款经典数字示波器的基本使用方法。

dream的博客 739

基于浏览器插件的拼多多买家订单导出方法

基于浏览器插件的拼多多买家订单导出方法

2501_93542170的博客 1715

Scala函数-随堂笔记(持续更新)

Scala函数Java LambdaScala函数定义函数调用参数传递命名参数参数缺省值参数个数未知匿名函数函数作参数函数作返回值课堂小测 Java Lambda 函数式接口: 一种只含有一个抽象方法声明的接口 可以使用匿名内部类实例化函数式接口的对象 通过Lambda表达式可以进一步简化代码 Lambda语法: (parameters) -> expression (parameters) -> { statements; } Scala函数定义 def 函数名([参数列表]):[返回值

Helltaker的博客 298

SAP ERP 系统订单行项目中的计划行(Scheduled Line)详解

*计划行(Scheduled Line)**是SAP系统中订单行项目(如采购订单、生产订单、销售订单等)的细分单元,用于记录和管理物料的供应或需求计划。每个订单行项目可以包含一个或多个计划行,每个计划行对应具体的交货日期、数量、需求类型(如采购申请、生产订单、库存调拨等)以及相关的物流控制参数。简单来说,计划行是系统对某一物料在特定时间点的供需状态的详细规划,它将订单分解为更细粒度的执行步骤,确保供应链各环节(如采购、生产、仓储)能够按计划协同工作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3385

15.Scala- 文件和正则表达式

第15章 文件和正则表达式 15.1 读取行 import scala.io.Source object FileSyllabus { def main(args: Array[String]): Unit = { //文件读取 val file1 = Source.fromFile("D:\\Data\\Scala\\随堂笔记\\笔记", "UTF...

weixin_30242907的博客 87

ABB机器人刷功能选项全一篇就够——不怕丢失程序和IO配置数据

ABB机器人刷功能选项

m0_66701835的博客 1258

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

14.Scala-隐式转换和隐式参数

第14章 隐式转换和隐式参数 14.1 隐式转换 隐式转换函数是以implicit关键字声明的带有单个参数的函数。这种函数将会自动应用, 将值从一种类型转换为另一种类型。 implicit def a(d: Double) = d.toInt //不加上边这句你试试 val i1: Int = 3.5 println(i1) 14.2 ...

weixin_30836759的博客 148

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

大数据常用shell脚本之kf脚本

一、前置准备 CentOS7、jdk1.8、zookeeper-3.5.7、kafka-2.4.1 想要完成本期视频中所有操作,需要以下准备: Kafka集群环境搭建-视频教程 大数据常用shell脚本之分发脚本编写-视频教程 大数据常用shell脚本之zk脚本编写-视频教程 大数据常用shell脚本之ha-hadoop脚本编写-视频教程 二、脚本源码 #!/bin/bash #作者:小康 #描述:Kafka集群启动停止以及查看状态脚本 #微信公众号:小康新鲜事儿 USAGE="使用方法:sh kf

广彐水厂 524

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大数据常用shell脚本之ha-flink脚本

一、前置准备 CentOS7、jdk1.8、flink-1.10.1、hadoop-2.7.7、zookeeper-3.5.7 想要完成本期视频中所有操作,需要以下准备: 大数据常用shell脚本之分发脚本编写-视频教程 大数据常用shell脚本之zk脚本编写-视频教程 大数据常用shell脚本之ha-hadoop脚本编写-视频教程 大数据常用shell脚本之kf脚本编写-视频教程 大数据常用shell脚本之fl脚本编写-视频教程 大数据常用shell脚本之ha-spark脚本编写-视频教程 HA(高可用

广彐水厂 602

大数据训练营开班仪式记录

时间:2020年06月29日 首先,我学这门课程初心是什么? 为了进入大数据行业,站在时代风口,而且是在尝试一个比较好的工作方式!!!为了以后的幸福生活! 拉勾教育CTO马建春观点分享: 1、数据时代 2、未来最大的能源是数据 内容有深度(分析源码) 有广度 这个课程不仅仅学习技术,而且要训练大数据的架构思维(贯穿于所有的实际案例) 学习报告和简历直接发给HR手中 以前大数据刚起来时,大数据人才大都是半路出家,企业内部人才孵化,很多人做大数据之前是做Java的 做技术 交流很重要 应癫老师分享 如何更好

qq_23187859的博客 1536

hive 插入数据映射到hbase_年薪50万都难招的大数据工程师,凭什么?

回顾2018年,降薪、裁员、互联网寒冬似乎成为主旋律,那实际上资本市场萎缩了吗?其实不然,2018年6月,蚂蚁金服还获得140亿融资,而热度较高的大数据行业,在2018年的融资额达到1273.1亿元,是2017年的2倍。所以对于市场来说好的项目、好的行业永远值得被投资。目前,一个大数据工程师月薪轻松过万,一个有几年工作经验的数据分析师,薪酬在40万~60万元之间,而更顶尖的大数据技术人才则是年薪轻...

weixin_39884078的博客 380

大数据考试知识点

大数据复习 上部分大数据复习 上部分第一章第二章第三章第四章第五章第七章第八章 大数据复习 上部分 第一章 1、 信息化浪潮 标志 解决的问题 第一次浪潮 个人计算机 信息处理 第二次浪潮 互联网 信息传输 第三次浪潮 物联网、云计算和大数据 信息爆炸 2、人类社会的数据产生方式大概经历了3个阶段:运营式阶段、==用户原创内容阶段==和**感知式系统阶段** 3、大数据的4个“V”,或者说是大数据的4个特点:数据量大、数据类型繁多、处理速度快、价值密度低 4、四种范式:实验科学、

weixin_43979716的博客 2590

SonarQube for IntelliJ 安全检测深度指南:污点漏洞、安全热点与依赖风险一网打尽

SonarQube for IntelliJ 是 JetBrains 系列 IDE(IntelliJ IDEA、CLion、Rider 等)的官方安全检测插件,它在编辑器中直接标记代码质量问题,其中最有价值的三大能力是:**污点漏洞(Taint Vulnerability)检测**、**安全热点(Security Hotspot)审查**和**依赖风险(Dependency Risk)分析**。本

gitblog_00613的博客 923

IntelliJ IDEA 2018.2.4 x64新建一个scala项目

1. 新建一个project,file-&gt;new-&gt;peroject 2. 选择新建一个scala项目,scala-&gt;IDEA-&gt;next 3. 给项目命名,选择保存地址,选择jdk安装目录,sdk选择create,系统会根据已安装的scala生成sdk。 4.scala项目新建完成。 ...

weixin_39090857的博客 1450

随堂笔记

随堂笔记 scrapy框架使用基本流程 创建项目: scrapy startproject dushu 创建爬虫: cd /dushu; scrapy genspider guoxue ““www.dushu.com”” 打开guoxue.py,开始写代码. class GuoxueSpider(scrapy.Spider): name = 'guoxue' allowed_domains = ['www.dushu.com'] # 起始地址,一般需要修改. st

hcxuke的博客 303
上一篇: 数据仓库理论介绍(随堂笔记)(持续更新)
下一篇: Scala函数-随堂笔记(持续更新)
Helltaker
博客等级 码龄6年 70粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值