如何安装sbt(sbt在ubuntu上的安装与配置)(有详细安装网站和图解)

news/2024/9/24 12:29:20/

sbt下载官网

 选择对应的版本和安装程序

Download | sbt (scala-sbt.org)

安装

解压

将sbt-1.9.0.tgz上传到xshell,并解压

解压:

tar -zxvf sbt-1.9.0.tgz


配置

1、在/home/hadoop/sbt中创建sbt脚本

/home/hadoop/sbt    注意要改成自己的地址

cd sbtvim ./sbt

 


 在脚本中添加如下内容:

记住里面的路径,要改成自己的路径

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


2、为sbt脚本文件增加可执行权限

一定要在对应的目录下完成

找到对应的文件夹目录

chmod u+x ./sbt


3、运行如下命令,检查sbt是否可用(查看sbt的版本信息)

./sbt sbtVersion

 


sbt的运用

一定要注意对应的目录和路径,不能错

1、创建存放代码的目录

mkdir -p sparkapp/src/main/scala/


2、编写代码

vim sparkapp/src/main/scala/test1.scala

 

对应目录 

在test1.scala文件中增加如下内容            

object HelloWorld{def main(args:Array[String]){println("hello world!");}}

3、进入sparkapp目录编写sbt程序

cd sparkapp/
vim simple.sbt


在simple.sbt中添加如下内容:

name := "Simple Project"    
version := "1.9.0"   
scalaVersion := "2.12.10"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.5.1" 
name := "Simple Project"    (项目名称)
version := "1.6.1"             (自己的sbt版本号)
scalaVersion := "2.12.10"        (自动scala版本号)
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.1.1"  (spark的版本号)
//如何要连接mysql的话
libraryDependencies += "mysql" % "mysql-connector-java" % "8.0.26" // 使用适合你MySQL版本的驱动

4、打包scala程序(必须在sbt/sparkapp这个路径下操作)

cd sbt/sparkapp/
/home/hadoop/sbt/sbt package


 (打包生成的jar包在sbt/sparkapp/target/scala-2.12/simple-project_2.12-1.6.1.jar) 不同的路径生成的位置也不一样

5、通过spark-submit运行程序

/usr/local/spark-3.5.1/bin/spark-submit --class "HelloWorld" ./target/scala-2.12/simple-project_2.12-1.9.0.jar

/usr/local/spark-3.5.1/bin/spark-submit   //spark-submit的对应位置

--class "HelloWorld"    //引用类的名称

./target/scala-2.12/simple-project_2.12-1.9.0.jar   //刚才打包的对应的位置

 运行结果


复杂代码的实现

1、创建一个代码文件text2.scala

cd sbt/sparkapp/src/main/scala/
vim text2.scala


 在文件中增加如下内容:

这段代码,中处理了employ.txt文件,请确定对应路径下你有这个文件

文件内容为

1,Ella,36

2,Bob,29

3,Jack,29

import org.apache.spark.sql.{SparkSession, Row}  
import org.apache.spark.sql.types._  object RDDToDataFrameExample {  def main(args: Array[String]): Unit = {  // 创建SparkSession  val spark = SparkSession.builder()  .appName("RDD to DataFrame Example")  .master("local[*]") // 使用本地模式,如果连接到集群请更改这里  .getOrCreate()  import spark.implicits._  // 指定employee.txt文件的位置  val inputFilePath = "file:///home/hadoop/employee.txt"  // 从文本文件读取数据创建RDD  val rdd = spark.sparkContext.textFile(inputFilePath)  // 定义DataFrame的schema  val schema = StructType(Array(  StructField("id", IntegerType, nullable = false),  StructField("name", StringType, nullable = false),  StructField("age", IntegerType, nullable = false)  ))  // 将RDD转换为DataFrame  val dataFrame = spark.createDataFrame(rdd.map { line =>  val parts = line.split(",")  Row(parts(0).toInt, parts(1), parts(2).toInt)  }, schema)  // 显示DataFrame内容  dataFrame.show(false)  // 按照指定格式打印所有数据  dataFrame.collect().foreach { row =>  println(s"id:${row.getAs[Int]("id")},name:${row.getAs[String]("name")},age:${row.getAs[Int]("age")}")  }  // 停止SparkSession  spark.stop()  }  
}


2、在sbt中编译打包(必须在cd sbt/sparkapp目录下)

cd
cd sbt/sparkapp
/home/hadoop/sbt/sbt package


3、使用spark-submit命令提交运行(必须在cd sbt/sparkapp目录下)

/usr/local/spark-3.5.1/bin/spark-submit --class "RDDToDataFrameExample" ./target/scala-2.12/simple-project_2.12-1.9.0.jar

4、运行后查看结果 

如果你学到这里,恭喜,你已经学习sbt的安装和使用了


http://www.ppmy.cn/news/1438269.html

相关文章

Spring Boot中的SSE与缓存集成:使用Redis加速事件推送

Spring Boot中的SSE与缓存集成:使用Redis加速事件推送 实时事件推送在现代Web应用中变得越来越重要,而Spring Server-Sent Events(SSE)为实现实时推送提供了一种简单而有效的方式。然而,随着应用规模的增长&#xff0c…

C++ | Leetcode C++题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isMatch(string s, string p) {auto allStars [](const string& str, int left, int right) {for (int i left; i < right; i) {if (str[i] ! *) {return false;}}return true;};auto charMatch []…

安装系统出现dracut-initqueue状态

如图显示&#xff0c;系统安装时未找到/dev/root位置 输入blkid&#xff0c;查看centos系统所在的盘 重启&#xff0c;按e进入 将linuxefi /images/pxeboot/vmlinuz inst.stage2hd:LABELCentOS\x207\x20x86_64 quiet 改成inst.stage2hd:/dev/sdb4 quiet (改成blkid中的盘符名称…

Oracle進階SQLDay03

一、函數進階復習 1、行轉列 select 用水儿量&#xff08;噸&#xff09; 统计项, sum(case when t_account.month01 then USENUM end) 一月, sum(case when t_account.month02 then USENUM end) 二月, sum(case when t_account.month03 then USENUM end) 三月, sum(case when …

Spring 事务 @Transactional 注解

上期我们讲解了Spring事务的两种实现&#xff0c;其中声明式注解使用了 Transactional 注解&#xff0c; 接下来我们学习 该注解的使用细节。 我们主要学习 Transactional注解当中的三个常见属性&#xff1a; rollbackFor&#xff1a;异常回滚属性&#xff0c;指定能够出发事…

宝塔面板使用docker+nginx+gunicorn部署Django项目实战教程

第一步&#xff1a;创建Django项目 使用pip install django安装创建django项目的依赖在电脑某个根目录下执行django-admin startproject app创建一个名为app的Django项目。目录结构如下: ├── app │ ├── init.py │ ├── asgi.py │ ├── settings.py │ ├── url…

redis中的双写一致性问题

双写一致性问题 1.先删除缓存或者先修改数据库都可能出现脏数据。 2.删除两次缓存&#xff0c;可以在一定程度上降低脏数据的出现。 3.延时是因为数据库一般采用主从分离&#xff0c;读写分离。延迟一会是让主节点把数据同步到从节点。 1.读写锁保证数据的强一致性 因为一般放…

Django模型的继承

Django模型的继承 Django模型的继承&#xff0c;包括模型的抽象基类、Meta继承、related_name和related_query_name属性、多表继承、Meta和多表继承、继承与反向关系、代理模型、代理模型继承和未托管模型&#xff0c;以及多重继承等内容。本文讲解一下抽象基类继承&#xff0…