安装sbt利用开发工具IntelliJ IDEA编写Spark应用程序(Scala+SBT)参考林子雨教程

文章目录

1、安装sbt

sbt(Simple Build Tool)是对Scala或Java语言进行编译的一个工具,类似于Maven或Ant,需要JDK1.8或更高版本的支持,并且可以在Windows和Linux两种环境下安装使用。sbt需要下载安装,可以访问"http://www.scala-sbt.org"下载安装文件sbt-1.3.8.tgz,保存到下载目录。假设下载目录为"~/Downloads",安装目录为"/usr/local/sbt",则执行如下命令将下载后的文件拷贝至安装目录中:

bash 复制代码
sudo mkdir /usr/local/sbt                创建安装目录
cd ~/Downloads 
sudo tar -zxvf ./sbt-1.3.8.tgz -C /usr/local 
cd /usr/local/sbt
 sudo chown -R hadoop /usr/local/sbt  此处的hadoop为系统当前用户名
cp ./bin/sbt-launch.jar ./  #把bin目录下的sbt-launch.jar复制到sbt安装目录下

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

bash 复制代码
vim /usr/local/sbt/sbt

该脚本文件中的代码如下:

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

保存后,还需要为该Shell脚本文件增加可执行权限:

bash 复制代码
chmod u+x /usr/local/sbt/sbt

然后,可以使用如下命令查看sbt版本信息:

bash 复制代码
cd /usr/local/sbt
./sbt sbtVersion

上述查看版本信息的命令,可能需要执行几分钟,执行成功以后就可以看到版本为1.3.8。

2、下载安装IDEA

本次运行系统为Ubuntu20.04。

我们可以访问官网下载安装包。文件较大,一般需要20分钟左右。有两种下载选择,我们选择下载正版,教程将使用试用版的idea。

下载后,我们把压缩包解压并且改名。

bash 复制代码
cd ~/Downloads
sudo tar -zxvf ideaIU-2024.1.2.tar.gz
sudo mv idea-IU-241.17011.79 /usr/local/Intellij


然后我们打开Intellij文件夹,并且使用其bin文件夹下的idea.sh打开程序。

bash 复制代码
cd /usr/local/Intellij/bin
./idea.sh




选择start free 30-day trial进入免费试用版。

接下来我们要把程序放到启动栏里快捷启动。

首先进入到applications文件夹下,并且编辑idea.desktop文件

bash 复制代码
cd /usr/share/applications
sudo gedit idea.desktop

在打开的文档里添加如下内容

bash 复制代码
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=IntelliJ IDEA
GenericName=Java IDE
Comment=IntelliJ IDEA is a code-centric IDE focused on developer    productivity. The editor deeply understands your code and knows its way around the codebase, makes great suggestions right when you need them, and is always ready to help you shape your code.
Exec=/usr/local/Intellij/bin/idea.sh
Icon=/usr/local/Intellij/bin/idea.png
Terminal=false
Type=Application
Categories=Development;IDE

然后保存(Ctrl+S)关闭,我们在启动栏里选择查找程序的那个应用(一般在启动栏第一个)。搜索Intellij即可找到程序,点击就可以启动idea。这时候我们就可以把程序锁定到启动栏使用了。如果搜索没找到,请重启系统。

3、给IDEA安装中文插件

首先如图打开plugins界面。

在顶部的搜索框里面,输入Chinese,就可以找到中文的汉化插件。

我们点击Install,就会开始下载安装插件,安装完成后,我们点击Restart IDE,重启后,就可以显示中文的IDEA界面了。

4、在Intellij里安装scala插件,构建基于SBT的Scala项目

搜索并安装scala。

如下图,按顺序执行如下操作:

新建项目

选择Scala--->SBT,设置项目名,这里需要设置Scala的版本必须2.11.*的版本号。因为Spark 2.0是基于Scala 2.11构建的。这个可以在Spark的官网查到,如下图:

点击create

利用SBT 添加依赖包

利用Spark的官网查到Spark artifacts的相关版本号,如下图:

编辑Intellij Idea项目中是build.sbt:

bash 复制代码
name := "SBTTest"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"

编辑后,如果Intellij Idea弹出提示,如图:

可以选择Refresh Project手动刷新,也可以选择Enable auto-import让Intellij Idea以后每次遇到build.sbt更新后自动导入依赖包。

创建WordCount实例

在Linux系统中新建一个命令行终端(Shell环境),在终端中执行如下命令,新建word.txt测试文件:

bash 复制代码
echo "hadoop hello spark hello world" > ~/word.txt

在Intellij Idea的src/main/scala项目目录下新建WordCount.scala文件,如下图(注意看图下面的备注):

备注:这里需要注意,在Intellij Idea启动时,会执行"extracting project structure from sbt"的操作,也就是把sbt所需要的项目结构从远程服务器拉取到本地,在本地会生成sbt所需要的项目结构。由于是从国外的远程服务器下载,所以,这个过程很慢,笔者电脑上运行了15分钟。这个过程没有结束之前,上图中的"File->New"弹出的子菜单是找不到Scala Class这个选项的。所以,一定要等"extracting project structure from sbt"的操作全部执行结束以后,再去按照上图操作来新建Scala Class文件。

#解决SBT下载慢,dump project structure from sbt问题参考

有1个问题需要注意一下需要大写的D

终于有了wwu

新建Scala Class文件的代码如下:

bash 复制代码
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.log4j.{Level,Logger}
 
object WordCount {
  def main(args: Array[String]) {
    //屏蔽日志
    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
    val inputFile =  "file:///home/hadoop/word.txt"
    val conf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
    val sc = new SparkContext(conf)
    val textFile = sc.textFile(inputFile)
    val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
    wordCount.foreach(println)
  }
}

右键WordCount.scala,选择执行该文件,如下图:

注意类名与文件名统一一下,不然会报错

看到输出结果了终于,一上午没白干!!!

相关推荐
呆呆洁ᵔ·͈༝·͈ᵔ1 小时前
Scala课堂小结
scala
程序员大阳5 小时前
闲谭Scala(1)--简介
开发语言·后端·scala·特点·简介
直裾5 小时前
scala图书借阅系统完整代码
开发语言·后端·scala
百流5 小时前
scala基础学习_运算符
开发语言·学习·scala
百流5 小时前
scala基础学习(数据类型)-数组
开发语言·学习·scala
呆呆洁ᵔ·͈༝·͈ᵔ5 小时前
Scala的条件匹配
scala
程序员大阳5 小时前
闲谭Scala(2)--安装与环境配置
jdk·scala·安装·配置·环境变量
春日彦5 小时前
Scala课堂小结
scala