Spark-Scala语言实战(1)

在之前的文章中,我们学习了如何在Linux安装Spark以及Scala,想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark及Scala的安装icon-default.png?t=N7T8https://blog.csdn.net/qq_49513817/article/details/136499998?spm=1001.2014.3001.5501

这篇文章,我会从Scala基础开始,带着大家一起实战,一起学习。为了方便,我这边用的是win的Scala。

目录

一、win版Scala下载配置

1.Scala下载

2.环境变量配置

 3.启动Scala

二、常量、变量、简单函数

1.定义常量

2.定义变量

3.定义数组

(1  数组

(2  数组操作方法

(3  创建区间数组

三、九九乘法表 

拓展

一、Scala数据类型

基本数据类型

复合数据类型

二、Scala运算符


一、win版Scala下载配置

1.Scala下载

Scala官网地址icon-default.png?t=N7T8https://www.scala-lang.org/download/all.html

我这边选用的版本是2.12.15,大家按需下载。

2.环境变量配置

 3.启动Scala

桌面win+r,输入cmd

 输入scala

出现Scala即成功

二、常量、变量

1.定义常量

 在Scala语言中,使用val关键字来定义一个常量(常量:常量是指一旦赋值后就不能再被修改的量)。

可以看到我们使用了val来定义一个常量,其中x1到x4是我们的常量名称,后面是我给它们赋的值,其中,值的数据类型是Scala自此定义的,因此我们也知道了Scala的特点之一(如果不指定变量的类型,Scala会自动生成)。

现在,我们来试试自己定义数据类型

现在,我们定义了一个常量x5,它的值是int类型的666,细心的朋友可能看出来了,我上面有个报错,那是因为Scala语言有严格的书写规范,在这里,Int的i要大写。

val x1=1


val x2=1.5


val x3=x1+x2


val x4=1+1.5


val x5:Int=666

2.定义变量

在Scala语言中,使用var关键字来定义一个变量。(变量:变量是用于存储数据的一种引用,可以存储任何类型的数据,如整数、浮点数、字符串、布尔值等,在存储过程中可以发生改变的量。)

和上面的方法很像,就是改变了一个字母而已,快来试试吧

var r1=8


var r2=88.8


var r3=88.8+8


var r4=r1+r2

3.定义数组

(1  数组

在Scala中,定义数组主要有两种方式

第一种:

可以看到,我们定义了两个数组。一个名为sz1,包含了1到5,另一个名为sz2,包含了两个字符串,一个“Hello”,一个“World”

第二种:

使用这种方式,Scala会现在里面赋默认值Null值,也就是空值,再随后并随后给它的三个元素分别赋了值,现在来试试吧

val sz1 = Array(1, 2, 3, 4, 5)

val sz2 = Array("Hello", "World")



val sz3: Array[String] = new Array[String](3)

sz3(0) = "haha"

sz3(1) = "hehe"

sz3(2) = "heihei"

(2  数组操作方法

操作描述示例
创建数组使用Array类创建数组val arr = Array(1, 2, 3)
数组长度使用length或size属性获取数组长度val length = arr.length
最大值使用max方法获取数组中的最大值val maxVal = arr.max
最小值使用min方法获取数组中的最小值val minVal = arr.min
排序使用sorted方法对数组进行升序排序val sortedArr = arr.sorted
数组连接使用++操作符连接两个数组val concatenated = arr1 ++ arr2
转换为列表使用toList方法将数组转换为列表val list = arr.toList
转换为集合使用toSet方法将数组转换为集合(去除重复元素)val set = arr.toSet
查找元素使用exists方法检查数组是否包含元素xarr.exists(_ == "x")

(3  创建区间数组

创建区间数组,只需要使用range()函数,但再此之前,我们先要导入包。

这样,我们就得到了一个1到10,每隔2一次的区间数组 

import Array._


val sz4 = range(1,10,2)

三、九九乘法表 

用Scala完成一个九九乘法表的实现。

其中

object jjcfb 定义一个名为jjcfb的类函数

def nb() = 定义名为nb的函数

for (i <- 1 to 9)

for (j <- 1 to i)  嵌套遍历循环

print(s"$j*$i=${i*j}\t")  输出i*j的值,并对齐输出\t制表符

 println()   //每行结束后换行

 object jjcfb {
   def nb() = {
     for (i <- 1 to 9) {
       for (j <- 1 to i) {
         print(s"$j*$i=${i*j}\t")
       }
       println()
     }
   }
 }

拓展

一、Scala数据类型

基本数据类型

  • Byte: 8 位有符号整数
  • Short: 16 位有符号整数
  • Int: 32 位有符号整数
  • Long: 64 位有符号整数
  • Float: 32 位 IEEE 754 单精度浮点数
  • Double: 64 位 IEEE 754 双精度浮点数
  • Char: 16 位 Unicode 字符
  • Boolean: 逻辑值,可以是 true 或 false
  • Unit: 表示没有具体的值,类似于 Java 中的 void(但 Unit 有一个唯一的实例值 ()
  • Nothing: 是所有其他类型的子类型,没有实例
  • Nullnull 值的类型,是 Nothing 的一个实例

复合数据类型

  • 元组(Tuples): 元组是不同类型值的集合。例如,(1, "hello") 是一个包含整数和字符串的二元组。
  • 数组(Arrays): 类似于 Java 中的数组,用于存储同类型的对象集合。
  • 列表(Lists): 可变长度的有序元素集合。Scala 中的列表是不可变的,但可以通过操作生成新的列表。
  • 集合(Sets): 无序且不包含重复元素的集合。
  • 映射(Maps): 存储键值对的集合,其中键是唯一的。
  • 字符串(Strings): 字符序列。Scala 中的字符串是不可变的。

二、Scala运算符

运算符描述示例
算术运算符用于执行基本的数学运算
+加法val peng = 5 + 3
-减法val peng = 5 - 3
*乘法val peng = 5 * 3
/除法val peng = 5 / 3
%取模(求余数)val peng = 5 % 3
关系运算符(比较运算符)用于比较两个值
==等于val peng = 5 == 3
!=不等于val peng = 5 != 3
>大于val peng = 5 > 3
<小于val peng = 5 < 3
>=大于或等于val peng = 5 >= 3
<=小于或等于val peng = 5 <= 3
逻辑运算符用于组合或否定关系表达式
&&逻辑与val peng = (5 > 3) && (2 < 4)
!逻辑非val peng = !(5 < 3)
赋值运算符用于将值赋给变量
=赋值var x = 5
+=加法赋值var x = 3; x += 2
-=减法赋值var x = 5; x -= 3
*=乘法赋值var x = 2; x *= 3
/=除法赋值var x = 10; x /= 2
位运算符对整数的位进行操作
&位与val peng = 5 & 3
位或
^位异或val peng = 5 ^ 3
~位非val peng = ~5
<<左移val peng = 5 << 1
>>右移val peng = 5 >> 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/462884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS3技巧38:3D 翻转数字效果

博主其它CSS3 3D的文章&#xff1a; CSS3干货4&#xff1a;CSS中3D运用_css 3d-CSDN博客 CSS3干货5&#xff1a;CSS中3D运用-2_中3d-2-CSDN博客 CSS3干货6&#xff1a;CSS中3D运用-3_css3d 使用-CSDN博客 最近工作上烦心的事情太多&#xff0c;只有周末才能让我冷静一下 cod…

uniapp 写安卓app,运行到手机端 调试

手机 设置》关于手机》点击版本号 4-5次&#xff0c;弹出手机锁屏页面&#xff0c;输入手机锁屏密码 2.手机 设置中 》搜索 开发人员选项 》 调试》打开USB调试 同页面 找到 选择USB配置》选择 MIDIhbuilder 编辑器 点击 》运行》运行到手机或模拟器》运行到Android App基座 》…

【日常记录】【JS】input标签输入中文导致value值的不正确

文章目录 1、描述2、解决方案3、参考 1、描述 在 input标签中&#xff0c;输入中文时&#xff0c;如若监听 input 事件&#xff0c;会得到意想不到的结果&#xff0c;如下面的图所示 2、解决方案 可以用到 compositionstart 监听输入中文开始的事件&#xff0c;compositionend …

inux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)

文章目录 1. 项目文件操作工具类设计 1. 项目文件操作工具类设计 根据前面的分析&#xff0c;这个文件类的基本属性如下&#xff1a; 文件大小信息文件最后修改时间文件最后一次访问时间&#xff0c;方便文件的热点管理文件名称&#xff0c;需要从http 请求行上的uri中获取基…

html编辑器

HTML 编辑器推荐 html可以使用记事本编辑 但是更建议使用专业的 HTML 编辑器来编辑 HTML&#xff0c;我在这里给大家推荐几款常用的编辑器&#xff1a; VS Code&#xff1a;https://code.visualstudio.com/WebStorm: https://www.jetbrains.com/webstorm/Notepad: https://no…

【八】【算法分析与设计】双指针(2)

11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能…

pytorch 入门基础知识一(Pytorch 01)

一 深度学习基础相关 深度学习三个主要的方向&#xff1a;计算机视觉&#xff0c;自然语言&#xff0c;语音识别。 机器学习核心组件&#xff1a;1 数据集(data)&#xff0c;2 前向传播的model(net)&#xff0c;3 目标函数(loss)&#xff0c; 4 调整模型参数和优化函数的算法…

Ascend C编程入门课:编程基础与Hello World

Ascend C编程入门课 一、基础概念 1.Ascend C&#xff1a;是昇腾异构计算架构CANN针对算子开发场景推出的编程语言&#xff0c;通过多层接口抽象、自动并行计算、孪生调试等关键技术&#xff0c;极大提高算子开发效率。 2.使用Ascend C自定义开发算子的优势&#xff1a; (1…

Golang协程详解

一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型&#xff0c;协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程&#xff0c;然后在不同的协程中完成不同的子任…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…

部署一个本地的ChatGPT(Ollama)

一 下载Ollama Ollama下载地址&#xff1a;https://ollama.com/download 下载完后 二 安装运行 双击下载好的OllamaSetup.exe开发 安装Ollama: 安装完成后&#xff0c;多了一个Ollama的菜单如下图 &#xff1a; Ollama安装好默认是配置开机运行&#xff0c;如果没有运行可以在…

高效使用 JMeter 生成随机数:探索 Random 和 UUID 算法

在压力测试中&#xff0c;经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值&#xff0c;本文来具体介绍一下。 随机数函数 JMeter 提供了多个用于生成随机数的函数&#xff0c;其中最常用的是__Random函数。该函数可以生成一个指定范围内的随机整数或浮…

pytorch 实现线性回归(Pytorch 03)

一 线性回归框架 线性模型的四个模块&#xff1a;训练的数据集&#xff0c;线性模型&#xff0c;损失函数&#xff0c;优化算法。 1.1 数据集 使用房价预测数据集&#xff0c;我们希望根据房屋的面积和房龄等来估算房屋价格。 1.2 线性模型 预测公式&#xff0c; 价格 权重…

智慧公厕建设的重要性

智慧公厕建设一直被视为提升城市管理水平的重要举措。作为一个关键的城市基础设施&#xff0c;智慧公厕不仅可以改善公共卫生管理&#xff0c;还能提升城市居民的社会民生生活质量。此外&#xff0c;智慧公厕建设还能促进城市的可持续发展&#xff0c;降低能源消耗&#xff0c;…

rust学习笔记(1-7)

原文 8万字带你入门Rust 1.包管理工具Cargo 新建项目 1&#xff09;打开 cmd 输入命令查看 cargo 版本 cargo --version2&#xff09; 使用 cargo new 项目名 在文件夹&#xff0c;按 shift 鼠标右键 &#xff0c;打开命令行&#xff0c;运行如下命令&#xff0c;即可创建…

【SQL】1193. 每月交易 I 【年月日(日期)拼接相关函数】

前述 知识点学习&#xff1a; SQL 日期函数 day() 、month()、year() 各种使用方法mysql 两个字符年月拼接 题目描述 leetcode题目&#xff1a;1193. 每月交易 I 思路 先按照年月排&#xff0c;再按照country排列 日期拼接相关的函数 year(): 截取年份&#xff1b;month…

linuxOPS基础_linux命令合集

uname查看操作系统信息 命令&#xff1a;uname [参数] 作用&#xff1a;获取计算机操作系统相关信息 参数&#xff1a;-a&#xff0c;选项-a代表all&#xff0c;表示获取全部的系统信息&#xff08;类型、全部主机名、内核版本、发布时间、开源计划&#xff09; 用法一&…

将OpenCV与gcc和CMake结合使用

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0开源计算机视觉库在 Linux 中安装 下一篇&#xff1a; 引言&#xff1a; 近年来&#xff0c;计算机视觉技术在图像处理、目标检测和机器人等方面得到了广泛的应用…

基于FPGA的光纤通信系统设计

文章目录 光纤通信系统的组成发送端FPGA端口定义状态机设计代码示例 接收端功能模块端口定义状态机设计 光纤通信系统的组成 发送端FPGA 发送控制逻辑、数据编码、校验码生成、缓存控制、时钟控制 端口定义 状态机设计 代码示例 接收端功能模块 接收端控制逻辑、数据解码、…

前世档案(不用二叉树语法秒杀版c++)

网络世界中时常会遇到这类滑稽的算命小程序&#xff0c;实现原理很简单&#xff0c;随便设计几个问题&#xff0c;根据玩家对每个问题的回答选择一条判断树中的路径&#xff08;如下图所示&#xff09;&#xff0c;结论就是路径终点对应的那个结点。 现在我们把结论从左到右顺序…