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


    sbt下载官网

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

    Download | sbt (scala-sbt.org)

     

     

    安装

    解压

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

    解压:

    tar -zxvf sbt-1.9.0.tgz


    配置

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

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

    1. cd sbt
    2. vim ./sbt

     


     在脚本中添加如下内容:

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

    1. #!/bin/bash
    2. SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
    3. 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文件中增加如下内容            

    1. object HelloWorld{
    2. def main(args:Array[String]){
    3. println("hello world!");
    4. }
    5. }

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

    cd sparkapp/
    vim simple.sbt


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

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

     

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

    1. cd sbt/sparkapp/
    2. /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

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


     在文件中增加如下内容:

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

    文件内容为

    1,Ella,36

    2,Bob,29

    3,Jack,29

    1. import org.apache.spark.sql.{SparkSession, Row}
    2. import org.apache.spark.sql.types._
    3. object RDDToDataFrameExample {
    4. def main(args: Array[String]): Unit = {
    5. // 创建SparkSession
    6. val spark = SparkSession.builder()
    7. .appName("RDD to DataFrame Example")
    8. .master("local[*]") // 使用本地模式,如果连接到集群请更改这里
    9. .getOrCreate()
    10. import spark.implicits._
    11. // 指定employee.txt文件的位置
    12. val inputFilePath = "file:///home/hadoop/employee.txt"
    13. // 从文本文件读取数据创建RDD
    14. val rdd = spark.sparkContext.textFile(inputFilePath)
    15. // 定义DataFrame的schema
    16. val schema = StructType(Array(
    17. StructField("id", IntegerType, nullable = false),
    18. StructField("name", StringType, nullable = false),
    19. StructField("age", IntegerType, nullable = false)
    20. ))
    21. // 将RDD转换为DataFrame
    22. val dataFrame = spark.createDataFrame(rdd.map { line =>
    23. val parts = line.split(",")
    24. Row(parts(0).toInt, parts(1), parts(2).toInt)
    25. }, schema)
    26. // 显示DataFrame内容
    27. dataFrame.show(false)
    28. // 按照指定格式打印所有数据
    29. dataFrame.collect().foreach { row =>
    30. println(s"id:${row.getAs[Int]("id")},name:${row.getAs[String]("name")},age:${row.getAs[Int]("age")}")
    31. }
    32. // 停止SparkSession
    33. spark.stop()
    34. }
    35. }


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

    1. cd
    2. cd sbt/sparkapp
    3. /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的安装和使用了

  • 相关阅读:
    Netty编解码机制(二)
    408王道计算机组成原理强化——输入输出系统大题(I/O)
    【C++】类和对象(上)
    C语言第入门——第十六课
    ArcGIS绘制地球
    迈动互联获“ISO20000信息技术服务管理体系认证证书”
    第2章 持久化初始数据到指定表
    嵌入式驱动源代码(10):NFC芯片PN532驱动开发
    C++算法初级4——排列枚举
    【PHP】PHP7中的引用计数
  • 原文地址:https://blog.csdn.net/weixin_66547608/article/details/138188239