概述
环境:spark 2.0.1
运行模式:spark on yarn
我们用scala语言编写的程序如何在spark集群上提交任务并运行呢,我们知道一个java程序spark提交命令如下:
spark-submit --class className --name jobName --master yarn-cluster ./xxx-SNAPSHOT.jar
其中clasName是入口main函数所在类,即程序入口;
jobName是提交的任务名称, ./xxx-SNAPSHOT.jar是程序打包而成的jar文件。
准备
要提交scala程序到spark上,首先我们需要会用IDE编写scala程序。
对于scala程序,简单语法和开发方式如下:
1. 入口main函数通过object关键字对象定义,可以参考scala基础7 —— scala的静态类型(object)
2. 针对scala程序的开发和打包,参考scala —— maven scala项目开发
程序实践
我们采用官网的LR代码示例来演示开发和提交任务,官网代码参见http://spark.apache.org/docs/latest/ml-pipeline.html。
创建工程
通过intellij创建一个工程,具体步骤以及配置参见##准备中的第2项,完整的pom.xml配置如下:
<properties>
<scala.version>2.11.8</scala.version>
<spark.version>2.0.1</spark.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId<