大数据处理学习笔记1.1 搭建Scala开发环境
文章目录
- 零、本讲学习目标
- 一、Scala简介
- (一)Scala概述
- (二)函数式编程
- (三)Scala特性
- 1、一切都是对象
- 2、一切都是函数
- 3、一切都是表达式
- (四)在线运行Scala
- 二、选择Scala版本
- 三、Windows上安装Scala
- (一)到Scala官网下载Scala
- (二)安装Scala
- (三)配置Scala环境变量
- (四)测试Scala是否安装成功
- 1、查看Scala版本
- 2、启动Scala,执行语句
- 四、Linux上安装Scala
- (一)到Scala官网下载Scala
- (二)安装Scala
- 1、登录ied虚拟机
- 2、上传scala安装包到ied虚拟机
- 3、解压scala安装包到指定目录
- (三)配置Scala环境变量
- (四)测试Scala是否安装成功
- 1、查看Scala版本
- 2、启动Scala,执行语句
- 五、Scala的使用
- (一)交互模式
- 1、命令行方式
- 2、文件方式
- (二)编译模式
- 1、创建源程序
- 2、编译成字节码
- 3、解释执行对象
- 六、课后作业
- 任务1、在你的笔记本上安装Windows版的Scala
- 任务2、在你的私有云虚拟机上安装Linux版的Scala
- 任务3、练习命令行模式与编译模式运行Scala
零、本讲学习目标
- 了解Scala语言的特点
- 学会搭建Scala开发环境
- 了解命令行模式与编译模式
一、Scala简介
(一)Scala概述
- Scala是Scalable Language的简写,是一门多范式的编程语言,由联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计,设计初衷是要集成面向对象编程和函数式编程的各种特性。
- Scala是一种将面向对象和函数式编程结合在一起的高级语言,旨在以简洁、优雅和类型安全的方式表达通用编程模式。Scala功能强大,不仅可以编写简单脚本,还可以构建大型系统。
- Scala运行于Java平台,Scala程序会通过JVM被编译成class字节码文件,然后在操作系统上运行。其运行时候的性能通常与Java程序不分上下,并且Scala代码可以调用Java方法、继承Java类、实现Java接口等,几乎所有Scala代码都大量使用了Java类库。
- Scala 是完全兼容Java的,其实Scala就是在Java语言的基础上增加了一层编码的 “壳”,让程序人员可以通过函数式编程的方式来开发程序。由于Scala最终被编译为.class,所以其实本质上还是Java,所以在Scala中可以任意的调用Java的API。好处显而易见:让Jva程序员可以更无障碍的转到Scala;让原先Java的API仍然可以在Scala中使用;公司中的Java平台不用替换就可以使用Scala。
(二)函数式编程
-
函数式编程:将所有复杂的问题的解决,拆分为若干函数的处理。每一个函数可以去实现一部分功能,利用很多次函数的处理,最终解决问题。
-
函数式编程相对于面向对象编程,更加抽象,好处是,代码可以非常简洁,更多采用常量而不是变量来解决问题,这样额外带来的好处:在线程并发时,可以减少甚至杜绝多线程并发安全问题,特别适合于应用在处理高并发场景、分布式场景下的问题。函数式编程可以使用高阶函数,函数是一等公民,可以更加灵活的进行程序的编写。
-
函数式编程并不是面向对象编程的发展,而是另外一种解决问题的思路,两者之间也并没有绝对的好坏之分,在不同的场景中各有各的优缺点。
(三)Scala特性
- 在很多地方
Scala
都很像Java
,也是静态类型语言,但是比Java
更为函数式编程,这句话主要从三句话就可以理解“一切都是对象”,“一切都是函数”以及“一切都是表达式”三方面理解。
1、一切都是对象
Scala
里一切都是对象,这大概和Python
很像,因为即便是数字1
都有一系列的方法,所以我们可以调用1.toDouble
将Int
类型的1
转换为Double
类型的1
。
2、一切都是函数
- 表现为可以重载操作符,跟
Python
很像,在一定程度上Scala
是Java
和Python
生的孩子,只不过遗传基因比较大的卵子是Java
提供的,而比较小的那颗精子则是Python
提供的。
3、一切都是表达式
- 在
Scala
里,一切都是表达式,即使像if(){}else{}
这样的语句块也是有返回值的。
(四)在线运行Scala
- 通过浏览器访问:Scala在线工具
- 单击【点击运行】按钮,可以查看代码运行结果
- 大家可以对照一下
Java
的HelloWorld
程序,两者完全一一对应,相似度极高
二、选择Scala版本
- 本次学习我们准备采用Spark3.3.1,为了后续操作不出现任何匹配方面的问题,建议采用跟Spark版本匹配的Scala。
- 根据Spark官网建议,我们最好下载Scala 2.13版本
三、Windows上安装Scala
(一)到Scala官网下载Scala
-
Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html
-
单击【scala-2.13.10.msi】超链接,将scala安装程序下载到本地
(二)安装Scala
- 双击安装程序图标,进入安装向导,按提示进行操作,完成Scala的安装
- 安装到默认的位置:
C:\Program Files (x86)\scala
,当然你也可以安装到其它位置
(三)配置Scala环境变量
- 设置Windows系统的环境变量
变量名 | 变量值 |
---|---|
SCALA_HOME | C:\Program Files (x86)\scala |
Path | %SCALA_HOME%\bin |
- 通常Scala安装完成后会自动将Scala的bin目录的路径添加到系统Path变量中。若Path变量中无该路径,则需要手动添加。
(四)测试Scala是否安装成功
1、查看Scala版本
- 启动命令行窗口,执行
scala -version
命令,若能正确输出当前Scala版本信息,则说明安装成功
2、启动Scala,执行语句
-
在命令行提示后输入
scala
,则会进入Scala的命令行模式,在此可以编写Scala表达式和程序
-
val -
value
:用于定义Scala常量
-
var -
variable
:用于定义Scala变量
-
常量只能赋值一次,再次赋值是不允许的
-
Scala里
val
定义的变量相当于Java里用final
定义的变量,其实都是常量,不能再给它赋值
四、Linux上安装Scala
(一)到Scala官网下载Scala
- Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html
- 单击【scala-2.13.10.tgz】超链接,将scala安装包下载到本地
(二)安装Scala
1、登录ied虚拟机
- 利用FinalShell登录ied虚拟机
2、上传scala安装包到ied虚拟机
- 进入
/opt
目录,将scala安装包上传到该目录
3、解压scala安装包到指定目录
- 执行命令:
tar -zxvf scala-2.13.10.tgz -C /usr/local
(三)配置Scala环境变量
- 执行命令:
vim /etc/profile
export SCALA_HOME=/usr/local/scala-2.13.10
export PATH=$SCALA_HOME/bin:$PATH
- 存盘退出后,执行命令:
source /etc/profile
,让环境配置生效
(四)测试Scala是否安装成功
1、查看Scala版本
- 执行
scala -version
命令,若能正确输出当前Scala版本信息,则说明安装成功
- 报错,原因在于没有安装JDK(运行Scala要用到Java虚拟机)
- 上传、安装、配置JDK
- 配置好JDK之后,查看Scala版本
2、启动Scala,执行语句
-
在命令行提示后输入
scala
,则会进入Scala的命令行模式,在此可以编写Scala表达式和程序
-
演示语句块的返回值
-
演示if结构的返回值
五、Scala的使用
- Scala可以在
交互模式
和编译模式
两种方式下运行
(一)交互模式
- 在命令行下直接敲命令或通过命令直接执行程序文件
1、命令行方式
- 直接在
scala>
提示符后敲代码执行
- 在
scala>
提示符之后输入:quit
,退出scala交互模式
2、文件方式
- 将代码写在
xxx.scala
文件中,通过scala xxx.scala
执行文件中的代码 - 创建
/scala_work
目录,进入该目录,执行命令:vim sum.scala
- 执行命令:
scala sum.scala
(二)编译模式
- 将代码写在
.scala
文件中,通过编译命令将.scala
编译为.class
,然后去解释执行。在.scala
文件中编写好代码,创建对象,包含入口函数。通过scalac
或fsc
命令进行编译,产生对应的.class
文件。再通过scala
命令来解释执行对象。scalac
和fsc
都可以进行编译工作,区别是fsc
会启动后台服务常驻系统后台,这样后续再进行编译的时候,速度就可以很快。
1、创建源程序
- 在
\scala_work
目录里创建文件HelloWorld.scala
2、编译成字节码
- 利用
scalac
将HelloWorld.scala
编译成字节码文件HelloWorld.class
- 查看生成的同名字节码文件
3、解释执行对象
- 执行命令:
scala HelloWorld
,运行程序,查看结果
六、课后作业
任务1、在你的笔记本上安装Windows版的Scala
任务2、在你的私有云虚拟机上安装Linux版的Scala
任务3、练习命令行模式与编译模式运行Scala
相关文章:
大数据处理学习笔记1.1 搭建Scala开发环境
文章目录零、本讲学习目标一、Scala简介(一)Scala概述(二)函数式编程(三)Scala特性1、一切都是对象2、一切都是函数3、一切都是表达式(四)在线运行Scala二、选择Scala版本三、Window…...
VSCODE C++ 调用matplotlibcpp画图
使用VSCODE编写C程序,想在调试过程中看中间数据的波形,于是找到了python的matplotlibcpp库,参考文章链接是:https://blog.csdn.net/weixin_43769166/article/details/118365416;按照他的步骤配置好之后,跳出…...
面对“开门红”,跨境支付如何寻求新增长曲线?
易观:2022年是第三方支付行业洗牌加剧的一年,在部分机构选择退出的过程中,也有机构开始瞄准跨境业务,成为了支付机构转型的重要方向之一。跨境支付是指两个或及其以上的国家或地区进行国际贸易、国际投资或其他经济活动࿰…...
MySQL入门篇-MySQL MHA高可用实战
MHA简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司的youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提…...
C语言文件操作
目录1.文件指针2.文件的打开和关闭3.文件的读写3.1文件的顺序读写fgetc和fputcfgets和fputsfscanf和fprintffread和fwrite3.2文件的随机读写fseekftellrewind4.文本文件和二进制文件5.文件读取结束的判定6.文件缓冲区1.文件指针 在文件操作中,一个关键的概念是文件…...
Flink中核心重点总结
目录 1. 算子链 1.1. 一对一(One-to-one, forwarding) 1.2. 重分区(Redistributing) 1.3. 为什么有算子链 2. 物理分区(Physical Partitioning) 2.1. 什么是分区 2.2. 随机分区ÿ…...
gismo中NURBS的相关函数的使用---待完善
文章目录 前言一、B样条的求值1.1 节点向量的生成1.2 基函数的调用1.3 函数里面的T指的是系数类型二、以等几何两个单元12个控制点为例输出的控制点坐标有误1.4二、#pic_center <table><tr><td bgcolor=PowderBlue>二维数2.12.22.32.4三、3.13.23.33.4四、4.…...
5.数据共享与持久化
数据共享与持久化 在容器中管理数据主要有两种方式: 数据卷(Data Volumes)挂载主机目录 (Bind mounts) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性: 数据…...
RabbitMQ-客户端源码之AMQCommand
AMQCommand不是直接包含Method等成员变量的,而是通过CommandAssembler又做了一次封装。 接下来先看下CommandAssembler类。此类中有这些成员变量: /** Current state, used to decide how to handle each incoming frame. */ private enum CAState {EXP…...
linux设置登录失败处理功能(密码错误次数限制、pam_tally2.so模块)和操作超时退出功能(/etc/profile)
一、登录失败处理功能策略 1、登录失败处理功能策略(服务器终端) (1)编辑系统/etc/pam.d/system-auth 文件,在 auth 字段所在的那一部分添加如下pam_tally2.so模块的策略参数: auth required pam_tally2…...
Centos7上Docker安装
文章目录1.Docker常识2.安装Docker1.卸载旧版本Docker2.安装Docker3.启动Docker4.配置镜像加速前天开学啦~所以可以回来继续卷了哈哈哈,放假在家效率不高,在学校事情也少点(^_−)☆昨天和今天学了学Docker相关的知识,也算是简单了解了下&…...
新瑞鹏“狂飙”,宠物医疗是门好生意吗?
宠物看病比人还贵,正在让不少年轻一族陷入尴尬境地。在知乎上,有个高赞提问叫“你愿意花光积蓄,给宠物治病吗”,这个在老一辈人看来不可思议的魔幻选择,真实地发生在当下的年轻人身上。提问底下,有人表示自…...
Spring循环依赖问题,Spring是如何解决循环依赖的?
文章目录一、什么是循环依赖1、代码实例2、重要信息二、源码分析1、初始化Student对Student中的ClassRoom进行Autowire操作2、Student的自动注入ClassRoom时,又对ClassRoom的初始化3、ClassRoom的初始化,又执行自动注入Student的逻辑4、Student注入Class…...
更改SAP GUI登录界面信息
在SAP GUI的登录界面,左部输入登录信息如客户端、用户名、密码等,右部空余部分可维护一些登录信息文本,如登录的产品、客户端说明及注意事项等,此项操作详见SAP Notes 205487 – Own text on SAPGui logon screen 维护文档使用的…...
分布式微服务架构下网络通信的底层实现原理
在分布式架构中,网络通信是底层基础,没有网络,也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作,共同完成一件事情。 同样,在大规模的系统架构中,应用吞吐量上不去、网络存在通信延迟、我…...
进大厂必备的Java面试八股文大全(2023最新精简易懂版,八股文中的八股文)
为什么同样是跳槽,有些人薪资能翻三倍?” 最近一个粉丝发出了灵魂拷问,类似的问题我收到过很多次,身边也确实有认识的同事、朋友们有非常成功的跳槽经历和收益,先说一个典型例子: 学弟小 A 工作一年半&am…...
都说测试行业饱和了,为什么我们公司给初级测试开到了12K?
故事起因: 最近我有个刚毕业的学生问我说:我感觉现在测试行业已经饱和了,也不是说饱和了,是初级的测试根本就没有公司要,哪怕你不要工资也没公司要你,测试刚学出来,没有任何的项目经验和工作经验…...
解决Idea启动项目失败,提示Error running ‘XXXApplication‘: Command line is too long
IDEA版本为:IntelliJ IDEA 2018.2 (Ultimate Edition)一、问题描述有时当我们使用IDEA,Run/Debug一个SpringBoot项目时,可能会启动失败,并提示以下错误。Error running XXXApplication: Command line is too long. Shorten comman…...
GB/T28181-2022针对H.265、AAC的说明和技术实现
GB/T28181-2022规范说明GB/T28181-2022相对来GB/T28181-2016针对H.265、AAC的更新如下:——更改了“联网系统通信协议结构图”,媒体流通道增加了 H.265、G.722.1、AAC(见 4.3.1,2016 年版的 4.3.1)。——增加了对 H.26…...
开关电源环路稳定性分析(11)——观察法找零极点
大家好,这里是大话硬件。 这篇文章主要是分享如何用观察法直接写出补偿网络中的零极点的表达式。 在前面的文章中,我们分别整理了OTA和OPA型的补偿网络,当时有下面的结论。 针对某个固定的补偿网络,我们可以用数学的方法推导补偿…...
焕新启航,「龙蜥大讲堂」2023 年度招募来了!13 场技术分享先睹为快
龙蜥大讲堂是龙蜥推出的系列技术直播活动,邀请龙蜥社区的开发者们分享围绕龙蜥技术展开,包括但不限于内核、编译器、机密计算、容器、储存等相关技术领域。欢迎社区开发者们积极参与,共享技术盛宴。往期回顾龙蜥社区技术系列直播截至目前已举…...
推广传单制作工具
临近节日如何制作推广活动呢?没有素材制作满减活动宣传单怎么办?小编教你如何使用在线设计工具乔拓云,轻松设计商品的专属满减活动宣传单,不仅设计简单,还能自动生成活动分享链接,只需跟着小编下面的设计步…...
软件设计(十一)数据结构(上)
线性结构 线性表 线性表是n个元素的有限序列,通常记为(a1,a2....an),特点如下。 存在唯一的一个称作“第一个”的元素。存在位移的一个称作“最后一个”的元素。除了表头外,表中的每一个元素均只有唯一的直接前趋除了表尾外&…...
https协议
文章目录对称加密方案非对称加密方案对称加密方案非对称加密方案对称加密方案非对称加密方案数字证书因为HTTP是明文传输,所以会很有可能产生中间人攻击(获取并篡改传输在客户端及服务端的信息并不被人发觉),HTTPS加密应运而生。 …...
深入浅出C语言——数据在内存中的存储
文章目录一、数据类型详细介绍1. C语言中的内置类型2. 类型的基本归类:二. 整形在内存中的存储1. 原码、反码、补码2. 大小端三.浮点数存储规则一、数据类型详细介绍 1. C语言中的内置类型 C语言的内置类型有char、short、int、long、long long、float、double&…...
在 Centos 上在线安装 GitLab
作为程序员,其中一个愿望是拥有一个自己的代码存储库。在支持私有部署的代码存储库产品中,GitLab 是比较著名的了,所以今天我总结了一下在 Centos 上安装 GitLab 的过程。 依赖 基础依赖 首先,需要安装部分基础的依赖ÿ…...
模型解释性:SHAP包的使用
本篇博客介绍另一种事后可解释性方法:SHAP(SHapley Additive exPlanation)方法。 1. Shapley值理论 Shapley值是博弈论中的一个概念,通过衡量联盟中各成员对联盟总目标的贡献程度,从而根据贡献程度来进行联盟成员的利益分配,避免…...
算法训练营 day45 动态规划 0-1背包理论 分割等和子集
算法训练营 day45 动态规划 0-1背包理论 分割等和子集 0-1背包理论 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 在下面的讲解中&…...
SSM框架
1.mybatis的底层原理 本质上就是使用反射和动态代理来实现对应的映射关系 2.日志级别 3.传递参数 单个参数的传递和多个参数的传递 Emp selectOne(Param(“xingming”) String name); List selectByCondition(Param(“name”) String name,Param(“sal”) double sal); 4.#和…...
教育行业需要什么样的客服系统?
某教育公司拥有素质教育、成人教育、智慧教育等多个业务板块,日常通过电商、线上媒体、线上线下授课等方式进行业务开展和品牌宣传,取得了非常不错的成绩,受到了很多人的好评反馈。 对于这样一个教育公司,客户来源广泛࿰…...
有哪些好的网站/搜狗推广开户
一、现象描述 在单个qml界面预览时,一切正常,但是运行后,切换到该界面就程序崩溃 QT版本为5.15 二、解决方法 1、qmake .pro文件 QT widgets main.cpp #include <QGuiApplication> 改为 #include <QApplication> QGuiApplic…...
事业单位备案网站/药品销售推广方案
编按:我们在工作中难免会遇到一些未设置任何格式的表格数据,这类数据会让读者看起来非常吃力。当碰到这个问题时,如果你只会手动一个个地去设置,那可得忙活半天。而如果你掌握一些整理数据的小技巧,别人半天的工作量&a…...
网站建设方法有那几种/百度百科官网登录
昨天提交给苹果审核版本的时候出现了: ERROR ITMS-90037:"This bundle is invalid. the Info.plist is missing or could not be parsed. Please check it for embedded control characters..." 从网上找了各种方法,最后还是给解决了ÿ…...
设计师网站都有哪些/百度竞价开户哪家好
弱网环境 在进行手机应用测试时,经常需要模拟网络不稳定的状态下对测试执行的影响。调研了几款工具,可以通过手动设置数据丢包率,以及网络时延等参数,模拟弱网环境。如Charles、clumsy、netlimite、atc等。 1、几款工具的比较 …...
宁波网站建设有限公司/沈阳网站seo排名公司
仅作为记录,大佬请跳过。 文章目录展示参考try{folder_group_index Convert.ToInt32(item.LabelInfo.Dimensioning);}catch{folder_group_index_string "unregular";}展示 参考 感谢大佬博主文章:传送门...
tklink的登录做网站/软文营销的步骤
开头 开发上线的版本能保证不存在Bug么? 修复后的版本能保证用户都及时更新么? 如何最大化减少线上Bug对业务的影响? 热修复技术帮助我们解决了很多问题,带来的优势不言而喻。不知道各位对于热修复技术掌握如何? 面试…...