使用Intellij Idea编写Spark应用程序(Scala+SBT)

对Scala代码进行打包编译时,可以采用Maven,也可以采用SBT,相对而言,业界更多使用SBT。之前有篇博客我们介绍了使用Intellij Idea编写Spark应用程序(Scala+Maven),采用的是Maven工具。今天这篇博客同样是使用Intellij Idea编写Spark应用程序,但是使用的是SBT工具。下面开始我们的教程。

运行环境

  1. Ubuntu 16.04
  2. Spark 2.1.0
  3. Intellij Idea (Version 2017.1)

安装Scala插件

安装Scala插件,该Scala插件自带SBT工具。如果已经安装Scala插件,即可跳过此步骤
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第1张图片
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第2张图片
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第3张图片
点击Install,即可安装Scala插件。

构建基于SBT的Scala项目

如下图,按顺序执行如下操作:
新建项目
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第4张图片
选择Scala--->SBT
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第5张图片
设置项目名,点击Finish即可。
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第6张图片

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

使用Intellij Idea编写Spark应用程序(Scala+SBT)_第7张图片

利用SBT 添加依赖包

利用Spark的官网查到Spark artifacts的相关版本号,如下图:
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第8张图片
编辑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更新后自动导入依赖包。
这里,选择Enable auto-import.

创建WordCount实例

执行如下命令,新建word.txt测试文件:

echo "hadoop hello spark hello world" >> ~/word.txt

在Intellij Idea的src/main/scala项目目录下新建WordCount.scala文件,如下图:
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第9张图片
内容如下:

 
   
  1. import org.apache.spark.SparkContext
  2. import org.apache.spark.SparkContext._
  3. import org.apache.spark.SparkConf
  4. import org.apache.log4j.{Level,Logger}
  5.  
  6. object WordCount {
  7. def main(args: Array[String]) {
  8. //屏蔽日志
  9. Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
  10. Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
  11. val inputFile = "file:///Users/Ruanrc/word.txt"
  12. val conf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
  13. val sc = new SparkContext(conf)
  14. val textFile = sc.textFile(inputFile)
  15. val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
  16. wordCount.foreach(println)
  17. }
  18. }
  19.  
scala

右键WordCount.scala,选择执行该文件,如下图:
使用Intellij Idea编写Spark应用程序(Scala+SBT)_第10张图片
即可在Intellij Idea下面看到输出结果。

你可能感兴趣的:(hadoop,java)