安装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”,则执行如下命令将下载后的文件拷贝至安装目录中:

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:

vim /usr/local/sbt/sbt

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

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

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

chmod u+x /usr/local/sbt/sbt

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

cd /usr/local/sbt
./sbt sbtVersion

上述查看版本信息的命令,可能需要执行几分钟,执行成功以后就可以看到版本为1.3.8。
在这里插入图片描述

2、下载安装IDEA

本次运行系统为Ubuntu20.04。
我们可以访问官网下载安装包。文件较大,一般需要20分钟左右。有两种下载选择,我们选择下载正版,教程将使用试用版的idea。
下载后,我们把压缩包解压并且改名。
在这里插入图片描述

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打开程序。

cd /usr/local/Intellij/bin
./idea.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择start free 30-day trial进入免费试用版。
在这里插入图片描述
接下来我们要把程序放到启动栏里快捷启动。
首先进入到applications文件夹下,并且编辑idea.desktop文件

cd /usr/share/applications
sudo gedit idea.desktop

在这里插入图片描述
在打开的文档里添加如下内容

[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:

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测试文件:

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文件的代码如下:

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,选择执行该文件,如下图:
在这里插入图片描述
注意类名与文件名统一一下,不然会报错
在这里插入图片描述
看到输出结果了终于,一上午没白干!!!

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unicornlyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值