1开发环境
1. scala-2.11.8
2. spark-2.1.1
3. intelliJ 2016.2
4. maven-3.5.0
基于IntelliJ IDEA构建spark开发环境
1)安装Scala插件
选择Browse repositories
输入Scala后搜索,然后安装,安装需要一些时间(具体看网速)
安装完毕后,IDEA就可以开发Scala程序了,点击OK完成安装。下面开始及时努力maven项目,点击create new project 进入project建立页面
依次点击 next进入下一步
输入groupID 和 artifactID(符合一般命名规范) 点next继续
这里选择自己安装的maven的home路径,同时settings file也选择自己maven的setting文件,并勾选override选项
输入maven工程名,点击finish完成
建立好的maven工程如下图所示
更改maven源
maven默认源在国外,由于众所周知的原因下载速度很慢,因此我们更改maven源为阿里云
在$MAVEN_HOME/conf/目录下setting文件,讲如下内容添加到文件中
请讲内容添加到<mirrors> 和</mirrors>之间
配置maven工程pom.xml文件(用以管理程序中的jar依赖)
将Scala.version值改为自己安装的Scala版本号,这里改为2.11.8.同时点击import changes enabale auto-import(当pom.xml文件有改动时自动添加依赖jar包)将如下内容添加到pom.xml文件<dependencies> 和 </dependencies>之间
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>
<!—spark-sql程序开发依赖 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>
<!—sparkStreaming程序开发依赖 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.11</artifactId>
<version>2.1.1</version>
</dependency>
<!—sparktreaming+kafka程序开发依赖 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
<version>2.1.1</version>
</dependency>
如对自己所需依赖配置不清楚,可在
http://search.maven.org/
http://mvnrepository.com/
进行查询
将程序打成jar包
1) IntelliJ IDEA打包方式
在main/scala/kafka.bmkp下面建立scala object文件作为应用程序源代码文件,同时删除main下的APP文件和test下的AppTest和MySpec.scala文件打开file—>Project Structure—>Artifacts—>JAR-->From modules with dependencies
点OK
点击Build-->Build Artifacts,在弹出的对话框中点击Build
Build完成后会在IDEA左侧工程栏中出现out文件夹,打包的jar文件就放在里面
2) maven 打包方式
使用maven进行打包同样需要将maven工程中默认的main和test文件夹中的.scala文件删除,创建自己的程序文件。
将maven工程中的pom.xml文件中的<build> 和</build> 中间的文件全部替换为如下内容
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<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>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass></mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
依次点击IntelliJ IDEA右侧的maven projects-->Lifecycle-->clean-->package
打包完成后会提示 build success。并在左侧target目录中看到打包好的jar包
将打包好的jar文件提交到spark集群运行
$SPARK_HOME/bin/spark-submit
--master spark:000.000.000.000:7077 指定spark集群的运行方式、IP、端口
--executor-memory 2G 指定该job每个核分配的内存
--total-executor-cores 10 指定该job所需的所有核数
--class kafka.bmkp.Main 指定主程序名(必须是完整路径)
Jar存放路径
参考文档
Spark-2.1.1文档http://spark.apache.org/docs/latest/
SparkStreaming文档
http://spark.apache.org/docs/latest/streaming-programming-guide.html#linking
sparkStreaming+kafka 文档
http://spark.apache.org/docs/latest/streaming-kafka-0-10-integration.html