我目前正在使用Intellij IDEA构建我的开发IDE。我的跟踪方式与http://spark.apache.org/docs/latest/quick-start.html
完全相同build.sbt文件
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
示例程序文件
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object MySpark {
def main(args: Array[String]){
val logFile = "/IdeaProjects/hello/testfile.txt"
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
如果我使用命令行:
sbt package
然后
spark-submit --class "MySpark" --master local[4] target/scala-2.11/myspark_2.11-1.0.jar
我能够生成jar包并且火花运行良好。
但是,我想使用Intellij IDEA在IDE中调试程序。我如何设置配置,这样如果我点击" debug",它将自动生成jar包并通过执行" spark-submit - "自动启动任务。命令行。
我只是希望一切都很简单,因为"一次点击"在Intellij IDEA的调试按钮上。
感谢。
答案 0 :(得分:19)
你可以简单地添加以下火花选项
export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7777
按如下所示创建Debug配置
Rub->编辑配置 - >点击“+”左上角的cornor - >远程 - >设置端口和名称
完成上述配置后,使用spark-submit或sbt run运行spark应用程序,然后运行在配置中创建的debug。并添加检查点以进行调试。
答案 1 :(得分:1)
如果您正在使用scala插件并将项目配置为sbt项目,那么它基本上应该是开箱即用的。
转到Run
- > Edit Configurations...
并正常添加您的运行配置。
由于您拥有main
课程,因此您可能希望添加新的Application
配置。
您也可以点击main
代码左侧的蓝色方块图标。
设置好运行配置后,您可以使用“调试”功能。
答案 2 :(得分:1)
当我在2.10和2.11之间切换时,我遇到了这种情况。 SBT希望主要对象位于src-> main-> scala-2.10或src-> main-> scala-2.11,具体取决于您的版本。
答案 3 :(得分:0)
它类似于此处提供的解决方案:Debugging Spark Applications。 您可以在Idea中创建远程调试运行配置,并将Java调试参数传递给spark-submit命令。 唯一的问题是你需要在触发spark-submit命令后在Idea中启动远程调试配置。我在某个地方读到,调试点之前的Thread.sleep应该可以让你这样做,我也能够成功地使用这个建议。