Scala学习第1节,项目中混入scala代码

Spark 是用Scala代码写的。为了调试Spark,做了如下尝试。

工作之后发现,学习的动力从大学的为学习而学习变成了现在的因需而学。多数情况下是为了更好的解决问题,或者单纯的为解决问题!本节的内容属于了解性质的都是从网上抄的!!

 

Scala简介

Scala(Scala Language的简称)语言是一种能够运行于JVM和.Net平台之上的通用编程语言,既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发,2004年开始程序运行在JVM与.Net平台之上,由于其简洁、优雅、类型安全的编程模式而受到关注。

1、Eclipse下:Java 项目 ,Using Maven,编写了一个java 版Spark应用。 Spark的代码(scala代码可以调试,但是查看变量极不方便,不忍直视,毕竟调试器时Java的,但代码是scala生成的字节码,还是有出入的)。

Scala是怎么火的

在Scala的创建之初,并没有怎么引起重视,随着Apache Spark和Apache Kafka这样基于Scala的大数据框架的崛起,Scala逐步映入大数据从业者的眼帘

2、Scala IDE下:Scala 项目,Using Maven,编写一个Scala版的Spark应用。

Scala的特点

Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。
Scala 运行在Java虚拟机上,并兼容现有的Java程序。
Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库

报找不到类的异常。解决该问题的方法是:

我为啥学Scala

  • 为了学习Spark(当然学习Spark不一定需要学习Scala
  • 提高代码的表达性(换个方式说为了减少敲得代码数量,因为Scala看起来真的很简练

简单点说:

第一步:升级Maven插件

   因为Scala IDE本事就是一个有Scala插件、Maven插件的Eclipse。但是内置的Maven插件只能创建Java项目,不能创建Scala项目。所以要更新Maven插件。

第二步:创建Maven项目时,选择scala的archetypes。

 

 

但是因为Scala IDE下载相关插件,速度实在是不敢恭维,就此作罢。

 

3、Scala IDE下:Java 项目,Using Maven,编写Scala 版的Spark应用。

在pom.xml中配置 scala编译器,以使使用Maven构建时,会使用Scala相关的编译器对Scala代码进行编译,生成字节码。

这样一来,就可以使用Scala调试器进行调试了。

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fjn.helper</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <artifactId>frameworkex-apache-spark</artifactId>
  <name>frameworkex-apache-spark</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.10</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.10.6</version>
    </dependency>

  </dependencies>
    <build>
        <plugins>
            <!-- This plugin compiles Scala files -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- This plugin compiles Java files -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- This plugin adds all dependencies to JAR file during 'package' command.
            Pay EXTRA attention to the 'mainClass' tag.
            You have to set name of class with entry point to program ('main' method) -->

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>sparkTest1</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

 

本文由明仕msyz手机版发布于旅游-环球旅讯,转载请注明出处:Scala学习第1节,项目中混入scala代码

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。