每日随笔——使用Maven对Scala独立应用程序进行编译打包
通过之前的博客,我们已经下载好maven并配置好环境,且能实现
(一)使用sbt对Scala独立应用程序进行编译打包
(二)使用Maven对Java独立应用程序进行编译打包
现在进行最后一步:使用Maven对Scala独立应用程序进行编译打包
Java应用程序代码
cd /export/server
mkdir -p sparkapp3/src/main/scala
在 ./sparkapp3/src/main/scala下建立一个名为 SimpleApp.java 的文件(vim ./sparkapp3/src/main/scala/SimpleApp.java),添加代码如下:
- import org.apache.spark.SparkContext
- import org.apache.spark.SparkContext._
- import org.apache.spark.SparkConf
- object SimpleApp {
- def main(args: Array[String]) {
- val logFile = "file:///export/server/spark/README.md" // Should be some file on your system
- val conf = new SparkConf().setAppName("Simple Application")
- val sc = new SparkContext(conf)
- val logData = sc.textFile(logFile, 2).cache()
- val numAs = logData.filter(line => line.contains("a")).count()
- val numBs = logData.filter(line => line.contains("b")).count()
- println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
- }
- }
该程序依赖Spark Java API,因此我们需要通过Maven进行编译打包。在./sparkapp3目录中新建文件pom.xml,命令如下:
cd /export/server/sparkapp3
vim pom.xml
在pom.xml中添加相关依赖
project> <groupId>cn.edu.xmu</groupId> <artifactId>simple-project</artifactId> <modelVersion>4.0.0</modelVersion> <name>Simple Project</name> <packaging>jar</packaging> <version>1.0</version> <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> </repository> </repositories> <dependencies> <dependency> <!-- Spark dependency --> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.4.0</version> </dependency> </dependencies> <build> <sourceDirectory>src/main/scala</sourceDirectory> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> <configuration> <scalaVersion>2.12.17</scalaVersion> <args> <arg>-target:jvm-1.8</arg> </args> </configuration> </plugin> </plugins> </build> </project>
打包
cd sparkapp3 #一定把这个目录设置为当前目录
/export/server/maven/bin/mvn package
通过 spark-submit 运行程序
/export/server/spark/bin/spark-submit --class "SimpleApp" /export/server/sparkapp3/target/simple-project-1.0.jar 2>&1 | grep "Lines with a:"