设为首页 加入收藏

TOP

使用idea和maven开发和打包scala和spark程序
2019-03-29 01:23:01 】 浏览:65
Tags:使用 idea maven 开发 打包 scala spark 程序
版权声明:无特别说明,博客均为作者所有,如有转载参考,请注明出处。 https://blog.csdn.net/xingyx1990/article/details/80752041

使用idea构建maven管理的scala和spark程序,默认已经装好了idea、scala并在idea中安装了scala插件。

一、新建Maven项目

打开idea,点击File—New—Project,弹出如下界面,选择Maven项目,查看是否是正确的JDK配置项正常来说这一栏会自动填充的(如果这里没有正常显示JDK的话,可以点击右侧的New…按钮,然后指定JDK安装路径的根目录即可)。在界面上也提供了"create from archetype"一些现成的模板,此处我们不使用模板,所以不勾选。点击Next。


来到Maven项目最重要三个参数的设置页面,这三个参数分别为:GroupId, ArtifactId和Version。GroupId一般为公司网址的反写+项目名 ArtifactId一般为项目名-模块名 Version=版本号,一般为1.0-SNAPSHOT即可。步骤如下图所示:


点击Next,进入下一步页面,可以设置项目名称和项目存储路径。


点击Finish,项目创建完成,进入到项目界面,点击右下角的Enable Auto-Import,这样会自动导入pom文件里的依赖。

二、Hello world

  1. 将Scala的框架添加到这个项目中,方法是在左侧栏中的项目名称上右键菜单中点击Add Framework Support…,然后在打开的对话框左侧边栏中,勾选Scala前面的复选框,然后点击确定即可(前提是上文中所述步骤都已正确走通,否则你很有可能看不到Scala这个选项的);

  2. 在main文件夹中建立一个名为 scala 的文件夹,并右键点击 scala 文件夹,选择 Make Directory as,然后选择Sources Root ,这里主要意思是将 scala 文件夹标记为一个源文件的根目录,然后在其内的所有代码中的 package ,其路径就从这个根目录下开始算起;

  3. 在已经标记好为源文件根目录的 scala 文件夹 上,右键选择 New,然后选择 Scala Class,随后设置好程序的名称,并且记得将其设置为一个 Object(类似于Java中含有静态成员的静态类),正常的话,将会打开这个 Object 代码界面,并且可以看到IntelliJ IDEA自动添加了一些最基本的信息。

在创建的 Object 中输入如下语句:

def main(args: Array[String]):Unit = {
    println("Hello World!")
}

4.在程序界面的任意位置,右键单击后选择 Run '你的程序名称',静待程序的编译和运行,然后在下方自动打开的窗口中,你就可以看到振奋人心的 Hello World!了

三、导入Spark依赖

此时你已经可以成功的运行一个Scala 项目了。想要运行在spark 上则还需要导入相关依赖。打开pom.xml文件添加如下依赖。

<properties>
        <spark.version>2.0.2</spark.version>
        <scala.version>2.11</scala.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

        </plugins>
    </build>
添加完成后,等待idea完成依赖包的自动导入(idea右下方可以看到是否导入完成)。

四、编写Spark代码

import org.apache.spark.{SparkConf, SparkContext}

  object MySpark {

    def main(args: Array[String]) {
      val conf = new SparkConf().setAppName("mySpark")
      //setMaster("local") 本机的spark就用local,远端的就写ip
      //如果是打成jar包运行则需要去掉 setMaster("local")因为在参数中会指定。
      conf.setMaster("local")
      val sc = new SparkContext(conf)
      val rdd = sc.parallelize(List(1, 2, 3, 4, 5, 6)).map(_ * 3)
      val mappedRDD = rdd.filter(_ > 10).collect()
      //对集合求和
      println(rdd.reduce(_ + _))
      //输出大于10的元素
      for (arg <- mappedRDD)
        print(arg + " ")
      println()
      println("math is work")
    }
  }

五、打包jar

选择File-Project Structure,在下图中选择箭头所指选项


在弹出对话框中继续选择如下图所示的配置。


由于我们的jar包实在spark 上运行的,所可以删除其他不需要的依赖包,如下图所示,删除其他不需要的包,只留下红色矩形中的两个。

注意:output directory 的路径。此处是你导出 jar 的路径


六、到服务器Spark运行

执行命令为:

spark-submit --class MySpark SparkTest.jar

稍等片刻,执行结果为:

63                                                                              
12 15 18 
math is work

参考博客:https://blog.csdn.net/u012373815/article/details/53266301

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Flume+kafka+SparkStreaming+redi.. 下一篇Spark standalone集群安装

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目