如何在Intellij中运行Spark scala应用程序

如何在Intellij中运行Spark scala应用程序,scala,intellij-idea,apache-spark,sbt,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 l

我正在尝试在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"
现在右键单击这个类->运行抛出异常:

exception in thread main java.lang.noclassdeffounderror: org/apache/Spark/SparkConf
显然我做错了什么,但我可以在依赖项列表中看到spark库。有什么帮助吗?(顺便说一句,通过SBT Scala控制台运行此程序非常有效)

运行

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())
  }
}

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

libraryDependencies+=“org.apache.spark”%%“spark核心”%%“1.6.2”%”已提供

指定工件的Scala版本
spark core

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

请注意,对象不应按照

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

编辑1:您还可以在测试时临时删除提供的限定符。

根据,这是不正确的:“请注意,应用程序应该定义main()方法,而不是扩展scala.App.scala.App的子类。此外,添加
main
和扩展
App
是多余的。