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=1val x2=1.5val x3=x1+x2val x4=1+1.5val x5:Int=666

2.定义变量

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

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

var r1=8var r2=88.8var r3=88.8+8var 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【智能算法】保姆级教程-如何使用CEC测试集,以及如何定义自己的优化问题

目录 1.准备工作2.使用CEC2005测试集3.自定义优化问题-无约束问题4.自定义优化问题-有约束问题5.代码实现 1.准备工作 一个CEC2005测试集 一个测试智能算法&#xff0c;比如麻雀搜索算法SSA 2.使用CEC2005测试集 以CEC2005测试集函数F7为例&#xff1a; 3.自定义优化问题…

solr/ES 分词插件Jcseg设置自定义词库

步骤&#xff1a; 1、找到配置文件jcseg-core/target/classes/jcseg.properties修改配置&#xff1a; 下载地址: https://gitee.com/lionsoul/jcseg#5-如何自定义使用词库 lexicon.path {jar.dir}/../custom-word 设置lexicon路径&#xff0c;我们这个配置可以自定义&#xf…

计算机网络-概述

文章目录 1.2 因特网概述1.2.1 网络、互连网&#xff08;互联网&#xff09;和因特网1.2.2 因特网发展的三个阶段1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种方式对比 1.4 计算机网络的定义1.5 计算机网络的性能指标1.5.1 速率1…

antd5 虚拟列表原理(rc-virtual-list)

github:https://github.com/react-component/virtual-list rc-virtual-list 版本 3.11.4(2024-02-01) 版本&#xff1a;virtual-list-3.11.4 Development npm install npm start open http://localhost:8000/List 组件接收 Props PropDescriptionTypeDefaultchildrenRender …

精读《手写 JSON Parser》

1 引言 JSON.parse 是浏览器内置的 API&#xff0c;但如果面试官让你实现一个怎么办&#xff1f;好在有人已经帮忙做了这件事&#xff0c;本周我们一起精读这篇 JSON Parser with Javascript 文章吧&#xff0c;再温习一遍大学时编译原理相关知识。 2 概述 & 精读 要解析…

【机器学习】分类模型的评价方法

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; #学习笔记# 目录 一、混淆矩阵&#xff08;Confusion Matrix&#xff09; 二、评估指标&#xff08;Evaluation metrics&#xff09; 1.正确率(accuracy) …

R统计学3 - 数据分析入门问题41-60

往期R统计学文章: R统计学1 - 基础操作入门问题1-20 R统计学2 - 数据分析入门问题21-40 41. R 语言如何做双坐标图? # 创建模拟数据 year <- 2014:2024 gdp <- data.frame(year, GDP = sort(rnorm(11, 1000, 100))) ur <- data.frame(year, UR = rnorm(11, 5, 1…

计算机网络(7)----应用层

目录 一.应用层的基本概念 1.应用层的基本概述 2.网络应用模型 &#xff08;1&#xff09;客户/服务器模型 &#xff08;2&#xff09;P2P模型 二.应用程序相关 1.DNS系统 &#xff08;1&#xff09;域名与域名服务器 &#xff08;2&#xff09;域名解析过程&#xff…

2024 第一届VCTF 纳新赛 Web方向 题解WP

hackjs 题目描述&#xff1a;A baby oldjs, just warm up. 附件给源码 const express require(express) const fs require(fs) var bodyParser require(body-parser); const app express() app.use(bodyParser.urlencoded({extended: true })); app.use(bodyParser.json…

CI/CD实战-git工具使用 1

版本控制系统 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 git官网文档&#xff1a;https://git-scm.com/book/zh/v2 Git 有三种状态&#xff1a;已提交&#xff08;committed&#xff09;、已修改&#xff08;modified&#xff09; 和 已暂存&#xff08;sta…

嵌入式硬件设计(一)|利用 NodeMCU-ESP8266 开发板和继电器结合APP“点灯•blinker”制作Wi-Fi智能开关(附有关硬件详细资料)

概述 本文主要讲述利用 NodeMCU-ESP8266 开发板和继电器通过手机 APP “ 点灯 • Blinker ” 制作一款能够由手机控制的WiFi 智能开关&#xff0c;从而实现智能物联。NodeMCU 是基于 Lua 的开源固件&#xff0c;ESP8266-NodeMCU是一个开源硬件开发板&#xff0c;支持WiFi功能&a…

OpenCV4.9.0开源计算机视觉库在 Linux 中安装

返回目录&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV 环境变量参考 下一篇&#xff1a;将OpenCV与gcc和CMake结合使用 引言&#xff1a; OpenCV是一个开源的计算机视觉库&#xff0c;由英特尔公司所赞助。它是一个跨…

深度学习-基于机器学习的情绪分析研究

概要 互联网技术的迅速发展使得社交平台逐渐成为热点事件中社会情感的枢纽。社会热点事件的舆论监管的其中一个重要环节就是能够准确分析民众的社会情绪。本文旨在探索可以基于文本大数据彻底分析民众对热点事件的社会情绪的模型和方法。先是从社交平台上借助文本大数据、对数据…

(一)Neo4j下载安装以及初次使用

&#xff08;一&#xff09;下载 官网地址&#xff1a;Neo4j Graph Database & AnamConnect data as its stored with Neo4j. Perform powerful, complex queries at scale and speed with our graph data platform.https://neo4j.com/ &#xff08;二&#xff09;安装并配…

ideaSSM失物招领管理系统网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 失物招领管理系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数…

YOLOv8训练好模型后,追加轮数继续训练、或者提前终止训练,缩减训练轮数

一、前言 而且此教程适用的情况是你已经训练好了此模型&#xff0c;想继续追加一些轮数。比如训练进度是120/120&#xff0c;已经完成了&#xff0c;继续追加10轮&#xff0c;或者你原先定的是200轮&#xff0c;希望缩减到150轮&#xff0c;可以使用我说的这个方法。为什么缩减…

深度学习-2.7 机器学习目标与模型评估方法

文章目录 深度学习目标与模型评估方法1. 深度学习目标与模型评估方法2. 手动实现训练集和测试集切分3. Dataset和DataLoader基本使用方法与数据集切分函数1.Dataset和DataLoader的基本使用方法2.建模及评估过程 4. 实用函数补充 深度学习目标与模型评估方法 1. 深度学习目标与…

LeetCode 7 / 100

哈希表、双指针 哈希表两数之和字母异位词分组最长连续序列 双指针移动零盛最多水的容器三数之和接雨水 LeetCode 1.两数之和 LeetCode 49. 字母异位词分组 LeetCode 128. 最长连续序列 LeetCode [283. 移动零](https://leetcode.cn/problems/move-zeroes/?envTypestudy-plan-…

Spring Cloud Alibaba微服务从入门到进阶(五)(负载均衡-Ribbon)

负载均衡有两种形式&#xff0c;服务器端负载均衡/客户端负载均衡 1、服务器端负载均衡 因为Nginx是部署在服务器端的&#xff0c;所以用Nginx实现的负载均衡被称为服务器端负载均衡 2、客户端负载均衡 手写一个客户端侧负载均衡器 使用Ribbon实现负载均衡 Ribbon是Netflix…

sparksession对象简介

什么是sparksession对象 spark2.0之后&#xff0c;sparksession对象是spark编码的统一入口对象&#xff0c;通常我们在rdd编程时&#xff0c;需要SparkContext对象作为RDD编程入口&#xff0c;但sparksession对象既可以作为RDD编程对象入口&#xff0c;在sparkcore编程中可以通…