大三寒假学习 spark学习 编写spark独立应用程序

使用Scala编写的程序需要使用sbt进行编译打包,相应的,Java程序使用 Maven编译打包,而 Python程序通过spark-submit直接提交

sbt编译打包:

1.安装sbt

  下载sbt-launch.jar,拷贝到虚拟机中

   

2.穿件sbt脚本

  创建 sbt 脚本(vim ./sbt),添加如下内容:

  #!/bin/bash
  SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
  java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@" 

  

3.运行命令

  最后运行如下命令,检验 sbt 是否可用(需要几分钟时间):

  ./sbt sbt-version

  如果出现权限被拒绝,修改权限即可:

  

  修改权限:chmod u+x ./sbt,再次运行之前的命令,会下载一些东西,要等几分钟

  只要能得到如下图的版本信息就没问题:

  

 

编写spark独立应用程序:

  在对应目录下(我的目录为/opt/module/sbt/mycode/src/main/scala)新建SimpleApp.scala文件添加如下代码:

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:///opt/module/data/english.txt"//注意要有file://
                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))
        }
}

请在./mycode 中新建文件 simple.sbt(vim ./mycode/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系:

注意版本号对应

name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"

检查文件结构如下如所示即为正确:

接着,我们就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):

 完成后:

生成的jar包位置:/opt/module/sbt/mycode/target/scala-2.12

可以通过spark-submit提交应用程序,该命令的格式如下:./bin/spark-submit

--class <main-class>  //需要运行的程序的主类,应用程序的入口点
  --master <master-url>  //Master URL,下面会有具体解释
  --deploy-mode <deploy-mode>   //部署模式
  ... # other options  //其他参数
  <application-jar>  //应用程序JAR包

  [application-arguments] //传递给主类的主方法的参数

对于之前使用sbt工具编译打包得到的 jar 包,就可以通过 spark-submit 提交到 Spark 中运行了,命令如下:

 

$ /opt/module/spark-3.1.2/bin/spark-submit --class "SimpleApp" /opt/module/sbt/mycode/target/scala-2.12/simple-project_2.12-1.0.jar

结果:Lines with a:8,Lines with b:7

 

posted @ 2022-01-23 21:45  风吹过半夏  阅读(168)  评论(0编辑  收藏  举报