大数据学习之scala语言基本语法学习36

hidamowang hidamowang     2022-12-18     154

关键词:

一:scala简介

官网:https://www.scala-lang.org/

Scala语言很强大,集成了面向对象和函数式编程的特点。

运行在JVMjdk)。

大数据中为什么学习scala?

sparkscala语言编写。

pythonspark 挺好的

javaspark 很糟糕(代码实在是太多了)

scalaspark 很完美

二:scala特点

1)优雅

框架设计中第一个要考虑的问题就是API是否优雅。

精简的封装。

代码精简(少)。

2)速度快

scala语言表达能力强。

一行代码=多行java代码,开发速度快。

3)完美融合hadoop生态

scala是静态编译,表达能力强并且代码量少。

三:安装Scala

1)下载

2)解压

3)配置环境变量(我是win10系统的,简单的安装,没有弄什么SACLA_HOME那些花里胡哨的东西。直接添加Scala

bin目录到Path中就行了)

技术图片

技术图片

 

 

SCALA_HOME=

path

四:Scala基础语法

1Scala程序的开始(编译器用的是Idea。安装一个Scala的插件就可以用了)

Helloworld

技术图片

2)Scala的数据类型

Scalajava一样,有8中数值类型:

Byte/Char/Short/Int/Long/Float/Double/Boolean/

Unit类型(void)

注意:scala中无包装类型。

Unit:表示无值,用于不返回任何结果的方法的结果类型。

3Scala定义变量

两个关键字:val var

val:定义变量值不可变

var:定义的变量值是可变的

scala编译器会自动的推断类型!

指定类型: val str:String = "dawn"

注意:类型要保持一致

Unit = ()()相当于什么都没有用()表示。

 技术图片

4)条件表达式

if:判断(和java差不多)

val y = if(x>0) 1 else 2

 技术图片

 

Any:包含AnyvalAnyRef

Anyval:包含scala所有类型

AnyRefScala classesJava Classes

Any相当于javaObject

 

val k = if(x<0) 0 else if(x>=1) 1 else -1

ifelse if:多个条件的判断,符合条件看左侧,不符合条件看右侧

 技术图片

5)块表达式

scala包含一系列表达式,块中的最后一个表达式的值就是块的值

6)循环

 

Scala拥有与JavaC++相同的whiledo循环

Scala中,可以使用forforeach进行迭代

 

使用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... 查看详情