每日随笔——使用sbt对Scala独立应用程序进行编译打包

使用sbt对Scala独立应用程序进行编译打包

1. 安装sbt

使用Scala语言编写的Spark程序,需要使用sbt进行编译打包。Spark中没有自带sbt,需要单独安装。可以在网盘下载sbt安装文件sbt-1.9.0.tgz。

网盘地址:https://pan.baidu.com/s/181shkgg-i0WEytQMqeeqxA(提取码:9ekc )

 sudo mkdir /export/server/sbt    
 sudo tar -zxvf /export/server/sbt-1.9.0.tgz -C /export/server/ 
 cd /export/server/sbt
 sudo chown -R hadoop /export/server/sbt
cp ./bin/sbt-launch.jar ./

安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:

 vim /export/server/sbt/sbt

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

增加权限

chmod u+x /export/server/sbt/sbt

查看版本信息

cd /export/server/sbt
 ./sbt sbtVersion

 安装完成

2. Scala应用程序代码

创建一个文件夹 sparkapp 作为应用程序根目录

cd /export/server/       # 进入用户主文件夹
mkdir  sparkapp        # 创建应用程序根目录
mkdir -p ./sparkapp/src/main/scala 

建立一个名为 SimpleApp.scala 的文件

vim ./sparkapp/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:///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 API,因此我们需要通过 sbt 进行编译打包。 在sparkapp这个目录中新建文件simple.sbt,命令如下

cd export/server/sparkapp
vim simple.sbt

添加依赖内容

name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.17"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.0"
版本号可以自行查看,上文有介绍

3. 使用 sbt 打包 Scala 程序

/export/server/sbt/sbt package

 

4. 通过 spark-submit 运行程序

 

posted @ 2023-10-29 12:48  伽澄  阅读(421)  评论(0编辑  收藏  举报