如何在Intellij

时间:2016-04-19 10:16:39

标签: scala intellij-idea apache-spark sbt

我试图在Hortonworks沙箱上使用Intellij运行一个简单的Spark应用程序。 我打开了一个新的SBT项目,然后创建了一个Scala类:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "/root/temp.txt"
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    println(logData .count())
  }
}

这是我的build.sbt:

name := "Simple Project"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" % "spark-core" % "1.3.0" % "provided"

现在右键点击此课程 - > run throws异常:

exception in thread main java.lang.noclassdeffounderror: org/apache/Spark/SparkConf

显然,我做错了什么,但我可以在依赖列表中看到spark库。有帮助吗? (BTW通过SBT Scala控制台运行该程序非常有效)

2 个答案:

答案 0 :(得分:3)

运行

object SimpleApp extends App {
  def main(args: Array[String]) {
    val logFile = "/root/temp.txt"
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    println(logData .count())
  }
}

答案 1 :(得分:0)

build.sbt文件中,您需要两个百分号:

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.2" % "provided"

指定工件spark-core的Scala版本。

要在IntelliJ IDEA中运行您的类,您还需要通过“文件 - >项目结构”添加Spark库。然后,在“Libraries”下,您可以添加必要的Spark库。

请注意,根据Spark QuickStart

,对象不应展开App
  

请注意,应用程序应定义main()方法,而不是扩展scala.App。 scala.App的子类可能无法正常工作。

编辑1:您还可以在测试时暂时删除provided限定符。