当前位置: 首页 > news >正文

Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

文章目录

  • 章节概要
  • 1.1 初识Scala
    • 1.1.1 Scala的概述
    • 1.1.2 Scala的下载安装
    • 1.1.3 在IDEA开发工具中下载安装Scala插件
    • 1.1.4 开发第一个Scala程序

章节概要

Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助于我们更好的掌握Spark框架。

1.1 初识Scala

1.1.1 Scala的概述

Scala于2001年由洛桑联邦理工学院(EPFL)的编程方法实验室研发,它由Martin Odersky(马丁•奥德斯基)创建。目前,许多公司依靠Java进行的关键性业务应用转向或正在转向Scala,以提高其开发效率、应用程序的可扩展性和整体的可靠性。

Scala是Scalable Language的简称,它是一门多范式的编程语言,其设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。具体如下:

  1. Scala是面向对象的
    Scala是一种纯粹的面向对象语言,每一个值都是一个对象。对象的数据类型以及行为由类的特征来描述。

  2. Scala是函数式编程的
    Scala也是一种函数式语言,其函数可以作为值来使用。

  3. Scala是静态类型的
    Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。

  4. Scala是可扩展的
    Scala提供了许多独特的语言机制,它以库的方式能够轻易无缝添加新的语言结构 。

  5. Scala是可交互操作的
    Scala旨在与流行的Java进行良好的交互操作。Scala用Scala编译器把源文件编译成Java的class文件。我们可以从中调用Java类库,也同样可以从Java应用程序中调用Scala的代码。

1.1.2 Scala的下载安装

Scala语言可以运行在Windows、Linux、Mac OS等系统上。由于Scala是运行在JVM平台上的,所以安装Scala之前必须配置好JDK环境(JDK版本要求不低于1.5版本)。本书使用的JDK版本是jdk1.8。

  1. 在Windows下安装Scala
  • 下载Scala安装包。
    访问Scala官网The Scala Programming Language,单击【Download】进入下载页面,该页面可以下载最新的Scala版本。我们考虑到Scala的稳定性和Spark的兼容性,这里选择下载Scala2.11.8(下载地址为:Scala 2.11.8 | The Scala Programming Language )具体如下图所示:
    在这里插入图片描述

  • 解压Scala安装包并配置windows系统下的环境变量
    下载成功后,解压Scala的安装包scala-2.11.8.zip到自己需要的位置,并在Windows系统下配置环境变量,点击【此电脑】>【属性】>【高级系统设置】>【环境变量】,在系统变量中点击【新建】,变量值为自己解压的位置,如下图所示:
    在这里插入图片描述
    在path中添加Scala的bin目录,如下图所示:
    在这里插入图片描述

  • 进入Windows命令行,输入“scala”命令,测试Scala环境是否安装成功。如下图所示:
    在这里插入图片描述

  1. 在Linux下安装Scala
  • 下载Scala安装包,并将安装包上传到Linux系统/export/software
  • 执行tar -zxvf scala-2.11.8.tgz -C /export/servers/命令解压安装
  • 在Linux系统下添加Scala环境变量
  1. 在Mac下安装Scala
  • 下载Scala安装包并解压安装包至主目录下(如果找不到主目录,则回到桌面,按⇧⌘H进入电脑主目录)。
  • 执行“open ~/.bash_profile”,添加Scala的环境变量。
  • 输入“scala -version”命令,查看Scala的安装情况,若终端出现Scala的版本号,则说明Scala安装成功。

1.1.3 在IDEA开发工具中下载安装Scala插件

目前Scala的主流开发工具主要有两种:分别是Eclipse工具和IDEA工具,我们可以在这两个开发工具中安装对应的Scala插件进行Scala开发。

由于IDEA工具可以自动识别代码错误和进行简单的修复、以及IDEA工具内置了很多优秀的插件,所以现在大多数的Scala开发程序员都会选择IDEA作为开发Scala的工具。

本书将以Windows操作系统为例,分步骤讲解如何在IDEA工具上下载安装Scala插件,具体步骤如下。

  1. 下载IDEA安装包,打开安装包进行单击【Next】按钮进行安装,直到出现”Welcome to IntelliJ IDEA“界面则安装结束。

  2. 访问“https://plugins.jetbrains.com/plugin/1347-scala”,下载Scala插件。

  3. 单击IDEA主界面右下角的【Configure】→【Plugins】→【Install plugin from disk】→【OK】→【OK】,单击【Restart】按钮,重启IDEA工具,安装结束。

注:为了电脑能更好的使用,不要将所有软件都安装在C盘,可安装到其他盘符,读者自行选择

1.1.4 开发第一个Scala程序

  1. 创建工程。在IDEA工具主界面中单击【create New Project】创建工程,如下图所示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 创建包和Scala类。

  • 创建包
    选中“src”文件夹,右键选择【New】→【Package】按钮,输入包名,效果如图所示
    在这里插入图片描述
  • 创建类
    选中包名,右键选择【New】→【Scala Class】,并选择【Object】类型创建Scala类,类名为“HelloWorld”,效果如下图所示:
    在这里插入图片描述
  1. 在HelloWorld.scala文件中编写代码 ,代码如下。
object HelloWorld {def main(args: Array[String]) {println("Hello, world!")}
}
  1. 运行代码,控制台输出结果如下图所示。
    在这里插入图片描述
    注:IntelliJ IDEA版本不同,界面也会稍有不同,读者需根据版本自行确定。

转载自:https://blog.csdn.net/u014727709/article/details/132032236
欢迎start,欢迎评论,欢迎指正

相关文章:

Spark大数据分析与实战笔记(第一章 Scala语言基础-1)

文章目录 章节概要1.1 初识Scala1.1.1 Scala的概述1.1.2 Scala的下载安装1.1.3 在IDEA开发工具中下载安装Scala插件1.1.4 开发第一个Scala程序 章节概要 Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术…...

R语言03-R语言中的矩阵

概念 在R语言中,矩阵(Matrix)是一个二维的数据结构,由行和列组成,其中所有元素必须具有相同的数据类型。矩阵可以用于存储数值型数据,常用于线性代数运算、统计计算以及数据处理等领域。 代码示例 # 创建…...

“深入理解JVM:探索Java虚拟机的工作原理与优化技巧“

标题:深入理解JVM:探索Java虚拟机的工作原理与优化技巧 摘要:本文将深入探索Java虚拟机(JVM)的工作原理及优化技巧。我们将介绍JVM的架构和组成部分,解释JVM是如何将Java字节码转换为可执行代码的。我们还…...

SQL注入原理

SQL、SQL注入是什么? 结构化查询语言(Structured Query Language,SQL),是一种特殊的编程语言,用于数据库的标准数据查询。1986 年10 月美国国家标准协会对SQL 进行了规范后,以此作为关系型数据库系统的标准语言。1987 …...

PIL.Image和base64,格式互转

将PIL.Image转base64 ##PIL转base64 import base64 from io import BytesIOdef pil_base64(image):img_buffer BytesIO()image.save(img_buffer, formatJPEG)byte_data img_buffer.getvalue()base64_str base64.b64encode(byte_data)return base64_str将base64转PIL.Image …...

vue父子组件传值(v-model)

父组件使用v-model传值给子组件 <template><!-- 按钮 --> <el-button click"addMenu(new)">打开弹框</el-button><!-- 自定义组件,下面这两种写法都可以&#x1f447; --> <MediaDialog :name"name" v-model:visible&qu…...

Java接口详解

接口 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本上的USB口&#xff0c;电源插座等。 电脑的USB口上&#xff0c;可以插&#xff1a;U盘&#xff0c;鼠标&#xff0c;键盘等所有符合USB协议的设备 电源插座插孔上&#xff0c;…...

Windows共享文件夹,用户密码访问

Windows共享文件夹&#xff0c;用户密码访问 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.先创建一个用户 计算机右键----管理----本地用户和组----点击用户进去---右键新建用户 这里以kk为例 2.找到你想共享的文件夹 3.共享-想共享的文件夹---右键---属性---共…...

Mac更新node

查看本机node版本 node -v 删除node相关内存 sudo npm cache clean -f 安装n sudo npm install n -g 更新node版本 sudo n stable // 把当前系统的 Node 更新成最新的 “稳定版本” sudo n lts // 长期支持版 sudo n latest // 最新版 sudo n 18.17.1 // 指定安装版本 可以顺便…...

2023国赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…...

Wireshark数据抓包分析之ARP协议

一、实验目的&#xff1a; 通过wireshark的数据抓包了解这个ARP协议的具体内容 二、预备知识: 1.Address Resolution Protocol协议&#xff0c;就是通过目标IP的值&#xff0c;获取到目标的mac地址的一个协议 2.ARP协议的详细工作过程&#xff0c;下面描述得非常清晰&#xff…...

6个比较火的AI绘画生成工具

随着人工智能技术的发展&#xff0c;市场上出现了越来越多的人工智能图像生成工具。这些人工智能图像生成工具可以自动创建惊人的图像、艺术作品和设计&#xff0c;以帮助设计师和创意人员更快地实现他们的创造性想法。在本文中&#xff0c;我们将推荐7种最近流行的人工智能图像…...

静力水准仪说明介绍

静力水准仪是测量两点间或多点间相对高程变化的仪器。由储液器、高精度芯体和特别定制电路模块、保护罩等部件组成。沉降系统由多个同型号传感器组成&#xff0c;储液罐之间由通气管和通液管相连通&#xff0c;基准点置于一个稳定的水平基点&#xff0c;当测点相对于基准点发生…...

HAProxy 高级功能与配置

HAProxy 高级功能与配置 配置和验证的环境看这篇文章:HAProxy 各种调度算法介绍 一.基于 cookie 的会话保持 使用cookie关键字来配置后端服务器基于 cookie 的会话持久连接。 配置格式 cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ][ post…...

cuda编程002—流

没有使用同步的情况&#xff1a; #include <stdio.h> #include <cuda_runtime.h>__global__ void test_kernel(){printf("Message from Device.\n"); } void test(){test_kernel<<<1, 1>>>(); } #include <cuda_runtime.h> #i…...

2023年国赛 高教社杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…...

【C#学习笔记】数据类中常用委托及接口——以List<T>为例

文章目录 List\<T\>/LinkedList \<T\>为什么是神&#xff1f;&#xff08;泛型为什么是神&#xff09;一些常见&#xff0c;通用的委托和接口ComparisonEnumerator List<T>/LinkedList <T>为什么是神&#xff1f;&#xff08;泛型为什么是神&#xff0…...

idea的断点调试

1、行断点 首先在代码的最左侧点击会显示红色的圆圈 第二步在main方法中右键选中debug run进行运行 会出现下面图片的情况 出现上图之后&#xff0c;点击console 下一步 这个时候就可以看到调试的结果了 6、方法调用栈&#xff1a;这里显示了该线程调试所经过的所有方法&…...

vue和react学哪一个比较有助于以后发展?

前言 首先声明vue和react这两个框架都是很优秀的前端框架&#xff0c;使用的人群下载量上数量也是相当的庞大&#xff0c;这篇文章没有贬低或者攻击任何一个框架的意思&#xff0c;只在于根据答主的问题来对这两个框架做出对比&#xff0c;以方便大家更加清晰的了解到当下vue和…...

【SkyWalking】分布式服务追踪与调用链系统

1、基本介绍 SkyWalking是一个开源的观测平台&#xff0c;官网&#xff1a;Apache SkyWalking&#xff1b; 可监控&#xff1a;分布式追踪调用链 、jvm内存变化、监控报警、查看服务器基本配置信息。 2、SkyWalking架构原理 在整个skywalking的系统中&#xff0c;有三个角色&am…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…...

【多线程初阶】单例模式 指令重排序问题

文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...