本文所需要的资料在此百度网盘下:链接:https://pan.baidu.com/s/1ITICjSxYntAuh8oe07Emxw?pwd=x0ib
提取码:x0ib


文章目录

  • 1 概述
  • 1.1 为什么学习 Scala
  • 1.2 Scala 发展历史
  • 1.3 Scala 和 Java 关系
  • 1.4 Scala 语言特点
  • 2. Scala环境搭建
  • 3. Scala 插件安装
  • 4 HelloWorld 案例
  • 4.1 创建 IDEA 项目工程
  • 4.2 class 和 object 说明
  • 4.3 Scala 程序反编译
  • 4.5 关联 Scala 源码
  • 4.6 官方编程指南



1 概述

1.1 为什么学习 Scala

1)Spark—新一代内存级大数据计算框架,是大数据的重要内容。
2)Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
3)Spark的兴起,带动Scala语言的发展!

1.2 Scala 发展历史

联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种
语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对
JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定
将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)
Pizza和Scala极大地推动了Java编程语言的发展。
⚫ JDK5.0 的泛型、增 强for循 环、自动类型转换等,都是从Pizza引入的新特性。
⚫ JDK8.0 的类型推断、Lambda表达式就是从Scala引入的特性。
JDK5.0和JDK8.0的编辑器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的战斗力抵得上一个Java开发团队

1.3 Scala 和 Java 关系

一般来说,学 Scala 的人,都会 Java,而 Scala 是基于 Java 的,因此我们需要将 Scala

和 Java 以及 JVM 之间的关系搞清楚,否则学习 Scala 你会蒙圈。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala

1.4 Scala 语言特点

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象函数式编程的最佳特性结合在一起的
静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)。
1)Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方
法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)
2)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有 的Java类库,实现两种语言的无缝对接。 3)Scala单作为一门语言来看,非常的简洁高效。 4)Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥
德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,
只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。

2. Scala环境搭建

1)安装步骤
(1)首先确保 JDK1.8 安装成功
(2)下载对应的 Scala 安装文件 scala-2.12.11.zip
(3)解压 scala-2.12.11.zip,我这里解压到 D:\Tools
(4)配置 Scala 的环境变量

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala_02


为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala_03


注意 1:解压路径不能有任何中文路径,最好不要有空格。注意 2:环境变量要大写 SCALA_HOME2)测试

需求:计算两数 a 和 b 的和。

步骤

(1)在键盘上同时按 win+r 键,并在运行窗口输入 cmd 命令

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala_04


(2)输入 Scala 并按回车键,启动 Scala 环境。然后定义两个变量,并计算求和。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Scala_05

3. Scala 插件安装

默认情况下 IDEA 不支持 Scala 的开发,需要安装 Scala 插件。

1)插件离线安装步骤

(1)建议将该插件 scala-intellij-bin-2017.2.6.zip 文件,放到 Scala 的安装目录

D:\Tools\scala-2.12.11 下,方便管理。

(2)打开 IDEA,在左上角找到 File->在下拉菜单中点击 Setting… ->点击 Plugins->点击

右 下 角 Install plugin from disk… , 找 到 插 件 存 储 路 径

D:\Tools\scala-2.12.11\scala-intellij-bin-2017.2.6.zip,最后点击 ok。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_spark_06


2)插件在线安装(可选

(1)在搜索插件框里面输入 Scala->点击 Install->点击 ok->点击 apply。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Java_07


(2)重启 IDEA,再次来到 Scala 插件页面,已经变成 Uninstall。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_spark_08

4 HelloWorld 案例

4.1 创建 IDEA 项目工程

1)打开 IDEA->点击左侧的 Flie->选择 New->选择 Project…

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Scala_09


2)创建一个 Maven 工程,并点击 next

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_java_10

3)GroupId 输入 com.atguigu->ArtifactId 输入 scala->点击 next->点击 Finish

注意:工程存储路径一定不要有中文和空格。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Scala_11


4)指定项目工作目录空间

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala_12


5)默认下,Maven 不支持 Scala 的开发,需要引入 Scala 框架。

在 scala0513 项目上,点击右键-> Add Framework Support… ->选择 Scala->点击 OK

·

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_java_13


注意:如果是第一次引入框架,Use libary 看不到,需要选择你的 Scala 安装目录,然 后工具就会自动识别,就会显示 user libary。

6)创建项目的源文件目录

右键点击 main 目录->New->点击 Diretory -> 写个名字(比如 scala)。

右键点击 scala 目录->Mark Directory as->选择 Sources root,观察文件夹颜色发生变化。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_java_14


7)在 scala 包下,创建包 com.atguigu.chapter01 包名和 Hello 类名,

右键点击 scala 目录->New->Package->输入 com.atguigu.chapter01->点击 OK。

右键点击 com.atguigu.chapter01->New->Scala Class->Kind 项选择 Object->Name 项输入

Hello。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_java_15


8)编写输出 Hello Scala 案例

在类中中输入 main,然后回车可以快速生成 main 方法;

在 main 方法中输入 println(“hello scala”)

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Scala_16


运行后,观察控制台打印输出:

hello scala

hello scala

说明:Java 中部分代码也是可以在 Scala 中运行。

4.2 class 和 object 说明

对第一个程序进行说明

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Java_17

object Hello {
def main(args: Array[String]): Unit = {
println("hello scala")
}
}
Scala完全面向对象,故Scala去掉了Java中非面向对象的元素,如static关键字,void类型
1)static
Scala无static关键字,由object实现类似静态方法的功能(类名.方法名)。
2)void
对于无返回值的函数,Scala定义其返回值类型为Unit类
class关键字和Java中的class关键字作用相同,用来定义一个类;

4.3 Scala 程序反编译

1)在项目的 target 目录 Hello 文件上点击右键->Show in Explorer->看到 object 底层生成
Hello$.class 和 Hello.class 两个文件

2)采用 Java 反编译工具 jd-gui.exe 反编译代码,将 Hello.class 拖到 jd-gui.exe 页面

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala_18


为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Scala_19

4.5 关联 Scala 源码

在使用 Scala 过程中,为了搞清楚 Scala 底层的机制,需要查看源码,下面看看如何关

联和查看 Scala 的源码包。

1)查看源码

例如查看 Array 源码。按住 ctrl 键->点击 Array->右上角出现 Attach Soures…

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_scala_20


2)关联源码

(1)将我们的源码包 scala-sources-2.12.11.tar.gz 拷贝到 D:\Tools\scala-2.12.11\lib 文件夹

下,并解压为 scala-sources-2.12.11 文件夹

(2)点击 Attach Sources…->选择 D:\Tools\scala-2.12.11\lib\scala-sources-2.12.11,这个文件夹,就可以看到源码了.

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_java_21

4.6 官方编程指南

1)在线查看:https://www.scala-lang.org/

2)离线查看:解压 scala-docs-2.11.8.zip,可以获得 Scala 的 API 操作。

为什么用livy创建的spark session任务 向hdfs写数据出现snappy 压缩的错误 spark为什么用scala_Java_22