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

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 sbt

vim ./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的安装和使用了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/575922.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

16 JavaScript学习: 类型转换

JavaScript 类型转换 Number() 转换为数字, String() 转换为字符串, Boolean() 转换为布尔值。 JavaScript 数据类型 在 JavaScript 中有 6 种不同的数据类型: stringnumberbooleanobjectfunctionsymbol 3 种对象类型: Obje…

Springboot多数据源及事务实现方案

Springboot多数据源及事务实现方案 文章目录 Springboot多数据源及事务实现方案背景问题分析实现原理1. 数据源抽象与动态路由2. 线程本地存储(ThreadLocal)3. 面向切面编程(AOP)4. 自定义注解 实现流程1. 设置数据源标识2. 开始数…

Godot3D学习笔记1——界面布局简介

创建完成项目之后可以看到如下界面: Godot引擎也是场景式编程,这里的一个场景相当于一个关卡。 这里我们点击左侧“3D场景”按钮创建一个3D场景,现在在中间的画面中会出现一个球。在左侧节点视图中选中“Node3D”,右键创建子节点…

医院手术室麻醉信息管理系统源码 自动生成麻醉的各种医疗文书(手术风险评估表、手术安全核查表)

目录 手术风险评估表 一、患者基本信息 二、既往病史 三、手术相关信息 四、风险评估因素 五、风险评估结果 手术安全核查表 一、患者身份与手术信息核对 二、术前准备核查 三、手术团队与职责确认 四、手术物品与设备核查 五、术中关键步骤核查 六、术后核查 七…

STM32中断实现旋转编码器计数

系列文章目录 STM32单片机系列专栏 C语言理论和实践总结专栏 文章目录 1. 旋转编码器 2. 中断代码编写 2.1 Interrupt.c 2.2 Interrupt.h 2.3 完整工程文件 1. 旋转编码器 旋转编码器主要用于测量轴的旋转位置、速度或者是角度的变化,它能够将转动的角度或者…

新兴游戏引擎Godot vs. 主流游戏引擎Unity和虚幻引擎,以及版本控制工具Perforce Helix Core如何与其高效集成

游戏行业出现一个新生事物——Godot,一个免费且开源的2D和3D游戏引擎。曾经由Unity和虚幻引擎(Unreal Engine)等巨头主导的领域如今迎来了竞争对手。随着最近“独特”定价模式的变化,越来越多的独立开发者和小型开发团队倾向于选择…

【数据结构】反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 Definition for singly-linked list.struct ListNode {int val;struct ListNode *next;};typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {i…

JavaEE初阶——文件操作和IO

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享文件操作及IO的内容 如果有不足的或者错误的请您指出! 目录 *1.解释IO**2.关于文件的基本知识*2.1路径2.1.1绝对路径2.1.2相对路径 2.2文件分类 *3.通过Java代码操作文件*3.1针…

Arcpy入门笔记(三):数据属性的读取

Arcpy入门笔记(三):数据属性的获取 文章目录 Arcpy入门笔记(三):数据属性的获取常用的属性Describe对象属性(部分)数据集属性(部分)表属性(部分&a…

python 脚本头(PyCharm+python头部信息、py头部信息、python头信息、py头信息、py文件头部)

文章目录 参考PyCharm设置脚本头头部信息 参考 https://developer.aliyun.com/article/1166544 https://blog.csdn.net/Dontla/article/details/131743495 https://blog.csdn.net/dongyouyuan/article/details/54408413 PyCharm设置脚本头 打开pycharm,点击file–…

5G赋能 扬帆未来|AGV无人仓成黑科技“顶流”

AGV 近年来,无人化这个概念逐渐被运用到了社会中的各个行业,而跟物流有关的就有无人分拣机器人、无人驾驶卡车、和无人叉车,越来越多的新装备也开始投入到实际运用中。 仓储管理在物流管理中占据着核心地位。传统的仓储管理中存在诸多的弊端…

怎样选购内衣洗衣机?2024年5款最新推荐机型种草

随着科技的不断发展,内衣洗衣机成为了家家户户必备的小家电之一,为我们的生活带来了极大的便利。但面对市场上众多的内衣洗衣机品牌,如何选择一款质量好的内衣洗衣机呢?本文将为您推荐5款最新的内衣洗衣机品牌,从而帮助…

一文解析golang中的协程与GMP模型

文章目录 前言1、线程实现模型1.1、用户级线程与内核级线程1.2、内核级线程模型1.3、用户级线程模型1.3、两级线程模型 2、GMP模型2.1、GMP模型概述2.1、GMP v1版本 - GM模型2.2、GMP v2版本 - GMP模型2.3、GMP相关源码2.4 调度流程2.5 设计思想 3.总结 前言 并发(并行&#x…

Babylon.js 程序化建模简明教程

Babylon.js 中的每个形状都是由三角形或小面的网格构建而成,如题图所示。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Th…

(二十九)加油站:面向对象重难点深入讲解【重点是元类】

目录: 每篇前言:0. Python中的元类:1. 本文引子:2. Python中的mro机制:3. Python中类的魔法属性dict:注意事项: 拓展——内建函数dir() 4. 正式谈一谈元类(metaclass):&a…

IIR滤波器的设计与实现(内含设计IIR滤波器的高效方法)

写在前面:初学者学习这部分内容,要直接上手写代码可能会感到比较困难,我这里推荐一种高效快速的设计IIR,FIR滤波器的方法——MATLAB工具箱:filterDesigner。打开的方法很简单,就是在命令行键入:filterDesig…

virtio-wayland

CrosVM是Chrome操作系统中,用于创建虚拟机的应用。是一个Rust编写的轻量级的虚拟机。借助于CrosVM 用户可以很容易的在ChromeOS中运行Linux、Android以及Windows应用程序 概述 目前crosvm实现了virtio wayland协议,实现了对linux虚拟机wayland协议支持 …

动态规划——斐波那契数列模型:面试题08.01.三步问题

文章目录 题目描述算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现CJava 题目描述 题目链接:面试题08.01.三步问题 如果n是0走法可能是1也可能是0,所以本题范围并不需要考虑直接从1开始即可 因为以3为结尾有直接从0到3的方式&a…

Kafka 3.x.x 入门到精通(04)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通(04)——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.5 存储消息2.5.1 存储组件2.5.2 数据存储2.5.2.1 ACKS校验2.5.2.2 内部主题校验2.5.2.3 ACKS应答及副本数量关系校验2.5.2.4 日志文…

从哪些角度优化数据资产管理?详解如何将数据转化为企业持续竞争力

在上一篇文章中我们介绍了数据资产管理的诸多保障措施,上篇文章指路👉如何保障数据资产管理有效开展?做好这几点就够了! 本文重点将转向数据资产管理的实践。在当今这个数据驱动的时代,数据已成为企业最宝贵的资产之一…