用VSCode开发Spark应用

本文介绍了如何使用VSCode结合Remote-SSH和Scala Metals插件,搭建远程Spark应用开发环境。通过安装相关插件、配置环境变量、创建Scala项目、编写build.sbt文件,以及设置libraryDependencies,实现Spark项目的编译、运行和调试。这种方式特别适合远程环境的开发,提供了轻量化的解决方案。

通常Spark普遍使用Jet Brain的Idea,用Idea建立本地服务器并进行测试开发,使用起来还相对不错,可以借力Idea强大而便捷的功能,使得开发应用相对得心应手。然而最近一直考虑远程服务器的搭建并建立开发环境,发现Idea缺乏远程开发的支持或支持不是十分完美。一段时间使用VSCode,感觉十分不错,轻量化,尤其完美的远程服务器模式,不仅支持WSL,也支持SSH远程模式很适合远程环境配置开发。以下是使用VSCode借力远程服务插件和Scala Metals插件搭建Spark应用开发环境记录心得。

1 VSCode安装远程服务插件

在VSCode扩展搜索安装Remote-SSH和Remote-WSL插件,他们分别支持SSH远程和WSL的环境开发。

 

 2 在VSCode扩展搜索安装Scala语言插件Scala Syntax (official)和Scala (Metals),核心是Scala Metals,该插件是Metals针对VSCode插件,为Scala center维护,可谓具有相当官方地位,具备代码补全、提示、高亮、运行与调试等功能。需要注意,不要同时安装 Scala Language Server 和 Scala (sbt) 插件。

 官方网址:Metals | Metals (scalameta.org)icon-default.png?t=LA92https://scalameta.org/metals/3 下载安装配置必要的应用软件,包括JDK、Scala、Sbt、Spark、Hadoop等。如果是本机测试,最小安装包括Spark,相应Hadoop、Scala。应该注意相互的版本匹配,比如spark-3.1.1-bin-hadoop3.2,选择安装hadoop-3.2.1,注意查看spark-3.1.1-bin-hadoop3.2 Scala版本,在Spark安装目录里jars下,可以看到Spark Scala是2.12.10,所以下载安装Scala 2.12.10。Sbt可以下载安装最新版。另需要注意,在Windows系统下,Spark最新版3.2.0安装后无法正常启动,但Spark 3.1.2还有以前的版本基本上能够正常运行。运行本地最小Spark其实并不需要Hadoop的安装,为了避免出错,在Windows系统下下载安装相应版本的Hadoop编译winutils,可以到Github下载。kontext-tech/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows (github.com)icon-default.png?t=LA92https://github.com/kontext-tech/winutils

JKD安装1.8版本,更高版本很多时候会出现各种各样的问题,适配性较差。软件安装需要完成一系列的设置,比如各环境变量JAVA_HOME、HADOOP_HOME、SPARK_HOME、SCALA_HOME、SBT_HOME,指向相应的软件安装目录,设置PATH路径。

4 创建Scala项目。创建项目目录比如spark-test,在内创建目录结构src/main/scala。在项目目录中启动VSCode。这是在我机器的WSL下状态。

wslu@LAPTOP-Q1FQOTCB:~/devz$ mkdir spark-test
wslu@LAPTOP-Q1FQOTCB:~/devz$ cd spark-test
wslu@LAPTOP-Q1FQOTCB:~/devz/spark-test$ mkdir -p src/main/scala
wslu@LAPTOP-Q1FQOTCB:~/devz/spark-test$ code .

在项目下新建文件build.sbt。

 

scalaVersion := "2.12.10"

name := "spark-test"
version := "1.0"

libraryDependencies += "org.scala-sbt" %% "zinc" % "1.5.7"

libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2"

修改scalaVersion和name适合你的设置,保存,此时会弹出Import the build,选Import build,此时Metals监测到项目的变化,识别项目是Scala项目,会开始进行一系列的项目设置,并下载相关依赖。当项目中有.sbt或.scala文件发生变化,Metals都会识别,做相应的Import build或编译等动作。

 可以看到项目结构产生了变化,在项目下新产生一些"."开头的文件目录和project、target目录。

 注意 libraryDependencies += "org.scala-sbt" %% "zinc" % "1.5.7" 是Metals项目需要的。以下可以编写代码。

首先在build.sbt中添加依赖:

libraryDependencies +="org.apache.spark"%%"spark-core"%"3.1.1"
libraryDependencies +="org.apache.spark"%%"spark-sql"%"3.1.1"

注意 ”3.2.0“ 是Spark版本,要适合你的Spark版本号。

创建Scala文件,比如Spark Test.scala,输入代码,保存。

import org.apache.spark.sql.SparkSession

object SparkTest  {

  def main(args: Array[String]) = {

    println("hello scala!")
    val ss = SparkSession.builder
      .appName("SparkTest")
      .master("local[*]")
      .getOrCreate()

    import ss.implicits._
    
    ss.createDataset(1 to 10).show()
    ss.close()
  }

}

Matels会识别变化,进行一些动作,然后可以运行程序。

在VSCode开启终端,用SBT编译、打包和运行程序。

 

 

 点击编辑窗口 run | debug,可以借助Metals直接进行程序的运行和调试。

 这后几个截图都是SSH远程运行的结果。

哈!不错呦。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值