大数据,机器学习,人工智能玩转大数据大数据 爬虫Python AI Sql

2019-07-28

2019-07-28  本文已影响2人  c062197eecd2

Scala 的发展历史

java 大概是在 92 年的时候出生的
scala 在 2003 年出生
2003 - 2013 年的时候,一直无人问津.

2013 年的时候,开始变火 ,spark 框架诞生了,这个带火了scala,因为这个框架的底层就是使用scala开发的
spark 可以使用 java 语言开发,也可以使用 Scala 语言开发等等

看完本文后的能力:

能力1: 熟练使用 Scala 开发 spark 程序.
能力1: 熟练使用 Scala 开发 spark 程序
能力2 : 使用 scala 开发一个简易的通信框架 能力2 : 使用 scala 开发一个简易的通信框架
能力3 : 阅读 spark 的源码 能力3 : 阅读 spark 的源码

1. scala 的基本介绍

为什么要学 Scala

1.优雅: 这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,APO 是否优雅灰直接影响到用户的体验

2.速度快: Scala 语言表达能力强,一行代码抵得上 Java 多行,开发速度快,Scala 是静态编译的,所以和 JRuby , Groovy 比起来速度会快很多.

3.能融合到 Hadoop 生态圈: Hadoop 现在是一个大数据的事实标准, Spark 并不是要取代 Hadoop ,而是要完善 Hadoop 生态圈, JVM 语言大部分可能会想到 Java ,但 Java 做出来的 API 太丑 ,或者想实现一个优雅的 API 太费劲了.

使用最多的版本是 2.11.
还有一个是2.10.x 版本也是比较多人用的,但是呢这个和上面那个不兼容的

scala 在数据处理上面,真的是非常的简洁,

2.scala 开发环境的安装

Windows 版本,建议去官网直接下载 zip 的安装包,直接解压后,.一定要注意的是,解压到一个没有中文没有空格的路径下面去.然后配置 SCALA_HOME 的环境变量就好了.这个本来没有的要新建.

关于:用户变量和系统变量,这两个都可以,只不过是其权限 不同罢了,有些公司会把用户变量或者系统变量的修改权限给你禁掉.

右击我的电脑,单击"属性",进入如图所示页面。下面开始配置环境变量,右击【我的电脑】--【属性】--【高级系统设置】--【环境变量】

2.1.HOME 的后面接上解压后的文件夹.

SCALA_HOME=D:\develop\scala-2.11.8 添加词条SCALA_HOME

2.2.配置Path : 就是刚刚添加的环境变量的名称的前面和后面都添加 % 号,然后在后面添加 \bin

%SCALA_HOME%\bin 配置环path
3. 到这里就配置完成了我们的win 的 scala ,在我们的黑窗口CMD中敲击命令 : scala 去检验是否安装成功.
检验是否配置成功了

3. Scala 开发工具安装

目前的 Scala 的开发工具主要有两种: Eclipse 和 IDEA ,.这两个开发工具都有相应的 Scala 插件, 如果使用 Eclipse ,直接到 Scala 官网进行下载对应的版本就很可以了.

http://scala-ide.org/download/sdk.html

由于IDEA 的 Scala 插件更加的优秀,大多数的 Scala 程序员都使用 IDEA 进行开发的,我们可以通过IDEA 进行在线安装,也可以到 IDEA 的插件网进行下载对应的版本插件进行离线安装,

http://www.jetbrains.com/idea/download/
第一步:进入设置

我们进入了 Plugins 之后,可以使用在线安装,下面展示的是IDEA 2017(这个版本目前最多人用)也可以使用离线安装,标红的位置就是使用我们本地安装,这个安装包就是我们刚刚去网站进行下载的包.当然也可以使用中间和左边的在线安装,更加的方便.


第二步: 2017版本的IDEA找到Plugin(本地插件) 这是2019IDEA 的安装

我们这里推荐使用离线进行安装,因为在线国外的原因网速多少挺慢甚至没有的.

到这里我们就已经在我们的工具中安装好了 Scala 开发工具了, 然后重启我们 IDEA
通过新建项目去检验是否安装成功.
4. Scala 的 REPL(ReadEvalPrint Loop/ 交互式解释器(其实按照单个的单词进行翻译更好一些)

R (Read /阅读), E(Evaluate / 评估) , P(Print / 打印输出) , L(Loop / 循环)
交互式解析器会读取输入内容,并对它进行求职,再返回结果,并重复此过程.(即所见即所得的编程)

说人话就是: Scala提供了Scala REPL,在我不确定一个算子的功能时,我可以很快打开REPL进行验证,并直观得到答案。

REPL 的特性:
变量会在会话周期内一直可用
多行代码和单行代码一起编译
支持链接外部的数据库和代码
REPL 历史命令会跨会话存储

我们直接在黑窗口CMD 输入 scala 就可以启动 Scala 并且进入到 REPL 中了
使用Scala 就直接进入到了我们的Scala REPL 中了
:help 查看我们可以使用到的常用命令,因为命令后面都带了解释就不一一解释了,简单的英文自己不懂得可以翻译哈!
使用:help 可以查看我们所有能够输入的命令 1.系统自动帮我们给了一个变量名
REPL 自动分配变量名: 如果我们在 REPL 当中没有定义变量名,那么我们的变量名系统会自动给定
注意: Scala 当中的变量类型可以不用指定,系统会自动推断,为了减少可变性引起的 bug, Scala 当中推荐尽量使用不可变类型来声明变量. Var 和 Val 申明变量的时候,变量都必须初始化.

在 Scala 中我们的输出打印只需要 ,相比java 的而言是简短很多很多的.

println()
2.我们可以直接去调用系统给的这个变量名获取里面的值

以上就是我们简单的 REPL 的 案例:就是所见即所得,这里可能还是很难理解,因为正常我们是不会再这个小黑窗口进行开发的,所以稍后我们将进入到 开发工具中去进一步的探索

4. 创建 支持 scala 的 maven工程代码开发

File ==> New ==> Project


第一步: idea中创建一个普通的maven 工程 第二步:新建maven 子模块 第三步:通常我们创建的是scala 的 Object对象
修改我们新建的Scala 文件夹属性 当然在子模块中可以也创建我们的scala 的 class 对象,也就是java的class 我们在新建Scala 的时候是有三种类型的

在这三个之中,首先我们的Scala 的里面是可以直接写Java 代码的,它是可以直接编译并且运行的.
Class 就是普通的java 对象.
在我们的java的类中可以写静态的和非静态的对象(变量/方法),他们的区别就是被 Static 静态修饰的,我们可以直接进行调用,不在需要先 new 一个类对象来进行调用.那么这样就是有时候,需要new ,有时候不用new ,静态和非静态的都混在了一起.

java中被static 修饰的是不用new对象就可以使用的

为了更好的进行分离我们的 Scala 把静态的给独立出来形成了 Object 对象了,我们的 Object 就是我们的java 中被 static 静态修饰的对象,也就是新建一个Object 之后,可以直接进行调用的.我们一般也是新建Object 对象.

注意:我们是要先把 scala 中的 scala maven jar 包依赖写好了,才可以在我们maven 的 new 的时候, 才有 Create New Scala Class .如果不导入依赖,那么就没有这个选项的,它只有新建 Java 对象.

day01子模块中的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Scala</artifactId>
        <groupId>asjdfas</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>asjdfas</groupId>
    <artifactId>Scala</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module></module>
    </modules>
    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.8</version>
            <!-- 如果想要用java -jar 来运行我们打包之后的jar包,则下面这个配置必须注释掉 -->
            <!-- <scope>provided</scope>-->
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!-- 限制jdk版本插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- 编译scala需要用到的插件 -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 项目打包用到的插件 -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>cn.itcast.scala.demo1.ScalaFirst</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

4.1
编写一个简单的scala代码输出print

通常我们写完的代码都是部署到服务器上面进行运行的,我们要打包,上传到服务器然后运行的.将我们的代码打包,之后,进行运行 双击 package 之后,就会出现我们打好的 jar 包,然后有依赖的那个包就可以用了.
运行我们的代码一共可以有四个命令,两种是打包的时候选择了我们的 main 程序类的,两 种是我们打包时候没有选择 main 程序类的 其中第一种和第三种,都是选定了我们的 main 程序类 第二种和第四种都是没有选定我们的 main 程序类 四种运行方式都可以用于运行我们的 jar 包

第一种运行方式:我们打包的时候指定了对应的 main 方法所在的程序类 
scala scaladay01-1.0-SNAPSHOT-jar-with-dependencies.jar 
第二种运行方式:不管打包的时候有没有指定 main 方法所在的程序类,都可以运行 
scala -cp scaladay01-1.0-SNAPSHOT-jar-with-dependencies.jar cn.coyi.scala.demo1.ScalaFirst 
第三种方式:我们打包的时候指定了对应的 main 方法所在的程序类 
java -jar scaladay01-1.0-SNAPSHOT-jar-with-dependencies.jar
第四种方式:不管打包的时候有没有指定 main 方法所在的程序类,都可以运行 
java -cp scaladay01-1.0-SNAPSHOT-jar-with-dependencies.jar cn.coyi.scala.demo1.ScalaFirst 
我们可以看到我们的scala代码最终也编译成了class文件

5. Scala 基础入门

新建Scala Worksheet
5.1 声明变量的基本语法
1
var/val声明变量的基本语法
2
scala自动类型和块表达式的类型
3
算数运算符
4 image.png
5
while 循环的使用
6
while 循环的跳出
7
for 循环
上一篇下一篇

猜你喜欢

热点阅读