Windows下使用IntelliJ IDEA创建Maven工程

来源:互联网 发布:流程审批软件 编辑:程序博客网 时间:2024/06/04 19:19

  本文介绍了Windows下使用IntelliJ IDEA创建Maven工程的步骤,需要首先搭建Spark环境,搭建过程见另一篇博客——Windows下使用IntelliJ IDEA搭建Spark环境。

1、 新建工程

  在欢迎界面点击Create New Project(或者主界面点击File,选择New - Project),在打开的页面左侧边栏中,选择Maven,然后在右侧的Project SDK一项中,查看是否是正确的JDK配置项(如果每一步严格按照上文中的步骤操作的话,正常来说这一栏会自动填充的,因为我们之前在之前已经配置过了全局的Project JDK了,如果这里没有正常显示JDK的话,可以点击右侧的New...按钮,然后指定JDK安装路径的根目录即可),然后点击Next,来到Maven项目最重要三个参数的设置页面,这三个参数分别为:GroupId, ArtifactIdVersion

这里写图片描述

  为了更好的解释这三个字段,用Maven标识符来进行讲解。

<groupId>com.hfut</groupId><artifactId>spark-test</artifactId><version>1.0</version>
  • GroupId,可以理解为用来标志你整个项目组的,或者你这些代码属于某一个完整的项目,比如上面的com.hfut就可以非常好的来标志Apache的Spark这个项目了。一般来说可以使用倒序的公司网址来作为GroupId,这可以类比为,沿袭了Java项目中使用倒序公司网址来作为Package名称的一个惯例。
  • ArtifactId,一般是用来在整个项目组来标志本项目的,相比GroupId的范围,其概念要稍微小一些,比如spark-test就非常好的表示出了本项目主要是一个Spark程序的测试,从而能够与其他各种组件或架构很好的区分开来。
  • Version,正如字面意思,就是本项目的迭代版本的信息,如上面的1.0。

2、 配置所需依赖包

  Spark在运行过程中需要条件很多依赖包,为了管理方便,我们通常使用Maven进行版本管理,这里以在pom.xml中添加spark-core为例进行说明:

<dependency>    <groupId>org.apache.spark</groupId>    <artifactId>spark-core_2.11</artifactId>    <version>2.2.0</version></dependency>

注:本例artifactId中的版本号为scala版本号,version为spark版本号。

  我们可以方便的从在线maven库里找到spark-core包:

这里写图片描述

  以上使用了固定版本号,还可以让根据所安装的scala版本自己寻找对应的版本号,具体写法如下:

<dependency>    <groupId>org.apache.spark</groupId>    <artifactId>spark-core_${scala.version}</artifactId>    <version>${spark.version}</version></dependency>

  至此,一个完整的Spark环境就可以使用了,此处给出一个pom文件代码:

<?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">    <modelVersion>4.0.0</modelVersion>    <groupId>com.hfut</groupId>    <artifactId>spark-test</artifactId>    <version>1.0</version>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <spark.version>2.2.0</spark.version>        <scala.version>2.11</scala.version>        <hadoop.version>2.7.3</hadoop.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-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-streaming_${scala.version}</artifactId>            <version>${spark.version}</version>        </dependency>        <dependency>            <groupId>org.apache.hadoop</groupId>            <artifactId>hadoop-client</artifactId>            <version>2.6.0</version>        </dependency>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-streaming-kafka_${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>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.39</version>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>        </dependency>    </dependencies>    <build>        <sourceDirectory>src/main/scala</sourceDirectory>        <testSourceDirectory>src/test/scala</testSourceDirectory>    </build></project>

  写完pom文件后,点击右下角提示中的Import Changes即可引入对应的依赖包。

Tips:

  • 这里面会有src/main/scalasrc/test/scala需要手动在对应项目目录下构建这两个文件夹路径,若不构建会报错(也可以直接在软件中设置)。
  • 如果依赖包导入速度慢,可以更改Maven源为阿里云。

3、 一个Wordcount程序

  接下来,给出一个Wordcount小程序的开发过程:
  如果已经设置了Scala SDK的全局变量,在src/main/scala文件夹下,右键新建Package,输入package的名字,我这里是com.test然后新建Scala class, 然后输入名字将类型改为object,如下图:

这里写图片描述

Tips:
  如果没有新建Scala class选项,可以通过以下方法解决:

  • 方法一:
      在Project Structure中选择Global Libraries,这时候会在中间一栏位置处出现Scala的SDK,在其上右键点击后选择Copy to Modules
  • 方法二:
      新建一个File文件,后缀改成 .scala ,点ok后文件中空白区会显示没有scala的SDK,这个时候你点击提示信息就可以添加本地的scala SDK(提前你的电脑上已经安装了scala,这个时候它会自动的去识别SDK),效果与方法一一样。

代码实例:

package com.testimport org.apache.spark.{SparkContext, SparkConf}object WordCountLocal {  def main(args: Array[String]) {    /**      * SparkContext 的初始化需要一个SparkConf对象      * SparkConf包含了Spark集群的配置的各种参数      */    val conf = new SparkConf()      .setMaster("local") //启动本地化计算      .setAppName("testRdd") //设置本程序名称    //Spark程序的编写都是从SparkContext开始的    val sc = new SparkContext(conf)    //以上的语句等价与val sc=new SparkContext("local","testRdd")    val data = sc.textFile("e://hello.txt") //读取本地文件    data.flatMap(_.split(" ")) //下划线是占位符,flatMap是对行操作的方法,对读入的数据进行分割      .map((_, 1)) //将每一项转换为key-value,数据是key,value是1      .reduceByKey(_ + _) //将具有相同key的项相加合并成一个      .collect() //将分布式的RDD返回一个单机的scala array,在这个数组上运用scala的函数操作,并返回结果到驱动程序      .foreach(println) //循环打印  }}

  如果能正确的打印出结果,说明spark示例运行成功,打包及提交方式将在下一篇博客中写到,点击查看。


参考链接:
http://blog.csdn.net/u013963380/article/details/71713582

原创粉丝点击