关键词:
一:scala简介
官网:https://www.scala-lang.org/
Scala语言很强大,集成了面向对象和函数式编程的特点。
运行在JVM(jdk)。
大数据中为什么学习scala?
spark是scala语言编写。
python写spark 挺好的
java写spark 很糟糕(代码实在是太多了)
scala写spark 很完美
二:scala特点
1)优雅
框架设计中第一个要考虑的问题就是API是否优雅。
精简的封装。
代码精简(少)。
2)速度快
scala语言表达能力强。
一行代码=多行java代码,开发速度快。
3)完美融合hadoop生态
scala是静态编译,表达能力强并且代码量少。
三:安装Scala
1)下载
2)解压
3)配置环境变量(我是win10系统的,简单的安装,没有弄什么SACLA_HOME那些花里胡哨的东西。直接添加Scala的
bin目录到Path中就行了)
SCALA_HOME=
path
四:Scala基础语法
1)Scala程序的开始(编译器用的是Idea。安装一个Scala的插件就可以用了)
Helloworld
2)Scala的数据类型
Scala与java一样,有8中数值类型:
Byte/Char/Short/Int/Long/Float/Double/Boolean/
和Unit类型(void)
注意:scala中无包装类型。
Unit:表示无值,用于不返回任何结果的方法的结果类型。
3)Scala定义变量
两个关键字:val var
val:定义变量值不可变
var:定义的变量值是可变的
scala编译器会自动的推断类型!
指定类型: val str:String = "dawn"
注意:类型要保持一致
Unit = ():()相当于什么都没有用()表示。
4)条件表达式
if:判断(和java差不多)
val y = if(x>0) 1 else 2
Any:包含Anyval和AnyRef
Anyval:包含scala所有类型
AnyRef:Scala classes与Java Classes
Any相当于java的Object
val k = if(x<0) 0 else if(x>=1) 1 else -1
if和else if:多个条件的判断,符合条件看左侧,不符合条件看右侧
5)块表达式
在scala中包含一系列表达式,块中的最后一个表达式的值就是块的值
6)循环
Scala拥有与Java和C++相同的while和do循环
Scala中,可以使用for和foreach进行迭代
使用for循环案例:
注意:
(*) <- 表示Scala中的generator,即:提取符
(*)第三种写法是第二种写法的简写
在for循环中,还可以使用yield关键字来产生一个新的集合
在上面的案例中,我们将list集合中的每个元素转换成了大写,并且使用yield关键字生成了一个新的集合。
使用while循环:注意使用小括号,不是中括号
使用do ... while循环
使用foreach进行迭代
注意:在上面的例子中,foreach接收了另一个函数(println)作为值
源码:
package dawn.day01 /** * @author Dawn * 2019年6月11日17:01:23 * @version 1.0 * scala基本语法基础 */ object Demo1 def main(args: Array[String]): Unit = //定义一个集合 var list =List("dawn","Anlis","xiaomei") var i=0 println("**********************第一种循环for **********************************") for(s <- list) println(s) println("**********************第二种循环while **********************************") while(i<list.length) println(list(i)) i+=1 println("**********************第三种循环do...while **********************************") i=0 do println(list(i)) i+=1 while(i<list.length) println("**********************第四种循环foreach(println) **********************************") list.foreach(println) println("测试yield方法") //测试yield var newList=for s <-list if s.length<=5 yield (s) //toBuffer相当一java中toString println(newList.toBuffer)
7)方法定义
Scala中 + - * / % 的作用和Java一样,但是特别的是,这些操作符实际上是方
法。个人觉得scala中所有定义的变量都是对象
1 to 10
1.to(10)
定义一个方法:
def m1(a:Int,b:Int):Int =
a + b
def:定义方法的关键字
m1:方法名
a:参数列表
b:参数列表
Int:返回值类型
a + b:函数体
大数据学习之scala语言的高级特性42
1、什么是泛型类和Java或者C++一样,类和特质可以带类型参数。在Scala中,使用方括号来定义类型参数测试程序: 2、什么是泛型函数函数和方法也可以带类型参数。和泛型类一样,我们需要把类型参数放在方法名之后。注意... 查看详情
大数据scala学习—列表集与映射
...组一、列表列表(List)是Scala中最重要的,也是最常用的一种数据结构。它存储的数据,特点是:有序,可重复。在Scala中,列表分为两种,即:不可变列表和可变列表。解释:1.有序的意思并不是排序,而是指元素的存入顺序和取出顺序... 查看详情
大数据scala学习—列表集与映射
...组一、列表列表(List)是Scala中最重要的,也是最常用的一种数据结构。它存储的数据,特点是:有序,可重复。在Scala中,列表分为两种,即:不可变列表和可变列表。解释:1.有序的意思并不是排序,而是指元素的存入顺序和取出顺序... 查看详情
spark学习之scala编程
一、Scala语言基础1、Scala语言简介Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。学习Scala编程语言,为后续学习Spark... 查看详情
大数据学习06scala的基础语法(代码片段)
大数据学习06Scala的基础语法介绍Scala的基础语法文章目录大数据学习06Scala的基础语法前言一、注释二、变量与常量1.基本语法2.代码实操三、标识符的命名规范1.命名规范2.字符串输出3.调试效果四、控制台标准输入1.代码实现2.调... 查看详情
从0开始学大数据-java基础语法
我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop、Spark、Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习。上一节了解Java的发展史和基本操作... 查看详情
spark学习之作业优化
...,我们学习了spark的语法、资源调度、sql语法优化和数据倾斜的技巧,今天我们来学习spark中的作业优化,也就是job优化。对往期内容感兴趣的同学可以参考👇:链接:spark学习之处理数据倾斜.链接:spark学习之sparksql... 查看详情
influxdb学习之influxdb的基本操作
InfluxDB是一个开源分布式时序、事件和指标数据库。使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。它有三大特性:1.TimeSeries(时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和... 查看详情
scala深入学习之函数学习(代码片段)
目录一、函数的定义二、匿名函数三、递归函数四、无参函数五、方法和函数的区别联系一、函数的定义代码示例:packagefunctionDemo/***@author:蔡政洁*@email:caizhengjie888@icloud.com*@date:2020/8/23*@time:2:14下午*/objectFunction... 查看详情
spark学习之作业优化(代码片段)
...,我们学习了spark的语法、资源调度、sql语法优化和数据倾斜的技巧,今天我们来学习spark中的作业优化,也就是job优化。对往期内容感兴趣的同学可以参考👇:链接:spark学习之处理数据倾斜.链接:spark学习之sparksql... 查看详情
scala模式匹配详解
...抽象类Scala基础语法之Trait详解Scala学习之数组与元组 大数据Scala学习—列表、集与映射理解Scala的函数式编程思想 Scala中有一个非常强大的模式匹配机制,应用也非常广泛,例如:判断固定值类型查询快速获取数据1简单模式匹... 查看详情
scala基础语法之trait详解(代码片段)
...ala系列学习笔记:Scala概述与开发环境配置Scala基础学习之运算符Scala基础学习之for循环和while循环一文掌握scala中的方法和函数Scala基础:类和对象、访问修饰符和构造器Scala的继承和抽象类本章节目标能够使用trait独立完... 查看详情
大数据学习之hdfs基本命令操作05
1)hdfs的客户端1.网页形式->测试用http://192.168.40.11:50070/dfshealth.html#tab-overview2.命令行形式->测试用3.企业级API 2)查看帮助 hdfsdfs-help 3)查看当前目录信息 hdfsdfs-ls/ 3)上传文件hdfsdfs-put/本地路径/hdfs路径& 查看详情
大数据学习之hdfs基本api操作(上)06(代码片段)
1packageit.dawn.HDFSPra;23importjava.io.FileNotFoundException;4importjava.io.IOException;5importjava.net.URI;6importjava.net.URISyntaxException;7importjava.util.Arrays;89importorg.apache.hadoop.conf.C 查看详情
spark学习之处理数据倾斜
🐥今天我们将对大数据计算管理部分的数据倾斜做一个总结,本文讲述主要是以spark计算引擎主,相信我,这可能是你看见过最详细的数据倾斜解决方案。对往期内容感兴趣的同学可以参考如下内容👇:链接:sp... 查看详情
大数据之scala高级语法学习
协变案例一:classAnimal{}classBirdextendsAnimal{}classAnimal{}classBirdextendsAnimal{}//协变classCovariant[T](t:T){}valcov=newCovariant[Bird](newBird)valcov2:Covariant[Animal]=covc不能赋值给c2,因为Covariant定义成不变类型。稍 查看详情
scala之option类型及偏函数使用异常处理正则表达式
...抽象类Scala基础语法之Trait详解Scala学习之数组与元组 大数据Scala学习—列表、集与映射理解Scala的函数式编程思想Scala模式匹配详解一、Option类型1.1概述实际开发中,在返回一些数据时,难免会遇到空指针异常(NullPointerException),遇到... 查看详情
spark学习之处理数据倾斜(代码片段)
🐥今天我们将对大数据计算管理部分的数据倾斜做一个总结,本文讲述主要是以spark计算引擎主,相信我,这可能是你看见过最详细的数据倾斜解决方案。对往期内容感兴趣的同学可以参考如下内容👇:链接:sp... 查看详情