1.Maven工程【父子结构搭建】
- 打开IDEA,新建Maven Project【spark】,填写Maven的GAV
- 创建好maven项目之后,点击Enable Auto-Import
- 修改spark的pom.xml文件
<!--表明当前项目是一个父项目,没有具体代码,只有声明的公共部分-->
<packaging>pom</packaging>
--------------------------
src就没用了,可以删除
- 在spark project下 new module:添加子项目【spark-core】
- 修改spark-core的pom.xml文件
<!--表明当前项目是一个父项目,没有具体代码,只有声明的公共部分-->
<packaging>pom</packaging>
--------------------------
src就没用了,可以删除
- 在spark-core模块下 new module:新建子项目【spark-wordcount】
注意:第三层级创建时注意location,手动更改为spark-core下面
spark的pom.xml中
<modules>应该有<module>spark-core</module>
---------------------------------------------------------------------
spark-core的pom.xml中
<parent>是spark
<modules>应该有<module>spark-wordcount</module>
---------------------------------------------------------------------
spark-wordcount的pom.xml中
<parent>是spark-core
- 至此,Maven项目的父子结构基本完成
2.修改spark的pom.xml
- 对于开发过程中所需要的文件进行配置
- 声明公有的属性
<!--声明公有的属性-->
<properties>
<spark.version>2.1.1</spark.version>
<scala.version>2.11.8</scala.version>
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.22</slf4j.version>
</properties>
- 声明并引入公有的依赖【日志和scala】
<!--声明并引入公有的依赖-->
<dependencies>
<!--Logging-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--Logging end-->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
<!--<scope>provided</scope>-->
</dependency>
</dependencies>
- 仅声明公有的依赖【spark-core】
<!--仅声明公有的依赖-->
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
<!-- 编译环境能用,运行环境不可用 -->
<!--<scope>provided</scope>-->
</dependency>
</dependencies>
</dependencyManagement>
- 配置构建信息
<!--配置构建信息-->
<build>
<!--声明并引入构建的插件-->
<plugins>
<!--设置项目的编译版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 用于编译Scala代码到class -->
<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>
</plugins>
<!--仅声明构建的插件-->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
3.修改spark-core的pom.xml
- 声明并引入公有的依赖
<!--不需要版本号-->
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
</dependency>
</dependencies>
4.编写WordCount代码
- 新建一个package
- 新建Scala Class文件【WordCount object】
- 将scala设为源代码目录
- 编码
import org.apache.spark.{SparkConf, SparkContext}
object WordCount extends App {
// 声明配置
val sparkConf = new SparkConf().setAppName("WordCount").setMaster("local[*]")
// 创建SparkContext
val sc = new SparkContext(sparkConf)
// 业务逻辑
val file = sc.textFile("hdfs://192.168.1.10:9000/user/lsy/README.txt")
val words = file.flatMap(_.split(" "))
val word2count = words.map((_,1))
val result = word2count.reduceByKey((_+_))
result.saveAsTextFile("hdfs://192.168.1.10:9000/user/lsy/result1")
// 关闭Spark连接
sc.stop()
}
注意:安装完IDEA的scala插件之后,还是不能创建scala相关文件时,需要检查Scala sdk
安装Scala sdk【File--Project Structure--Global Libraries】
- 1.确定IDEA所需scala插件版本
- 2.到 https://plugins.jetbrains.com/plugin/1347-scala 下载对应的插件
- 3.下载完成后,将scala插件放到IDEA安装目录下的plugins目录
- 4.手动安装scala-intellij-bin-2019.3.23.zip插件
- 5.成功之后,需要重启IDEA
- 6.下载scala【https://www.scala-lang.org/download/2.11.8.html】
- 7.解压到指定目录
- 8.安装scala sdk,并将sdk添加到所需要的module中
注意:project structure中添加的sdk版本与项目依赖的scala版本保持一致
5.修改spark-wordcount的pom.xml
- 配置构建信息
<!--配置构建信息-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>edu.lsy.wordcount.WordCount</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>