IntelliJ 中的独立 Spark 应用程序

Standalone Spark application in IntelliJ

我正在尝试 运行 本地服务器上的 spark 应用程序(用 Scala 编写)进行调试。似乎 YARN 是我在 sbt 构建定义中拥有的 spark (2.2.1) 版本的默认设置,并且根据我不断收到的错误,没有 spark/YARN 服务器侦听:

Client:920 - Failed to connect to server: 0.0.0.0/0.0.0.0:8032: retries get failed due to exceeded maximum allowed retries number

根据 netstat 确实在我的本地服务器上确实没有端口 8032,处于侦听状态。

我通常如何 运行在本地完成我的 spark 应用程序,以绕过这个问题?我只需要应用程序处理少量数据以进行调试,因此希望能够在本地 运行,而不依赖于本地服务器上的特定 SPARK/YARN 安装和设置——这将是理想的调试设置。

这可能吗?

我的 sbt 定义已经引入了所有必要的 spark 和 spark.yarn 罐子。当 运行在 IntelliJ 之外的 sbt 中使用同一个项目时,问题也会重现。

如果您必须使用极小的数据测试管道,您可以使用 .master("local[*]") 在本地模式下提交 spark 应用程序。

完整代码:

val spark = SparkSession
  .builder
  .appName("myapp")
  .master("local[*]")
  .getOrCreate()

对于 spark-submit 使用 --master local[*] 作为参数之一。参考这个:https://spark.apache.org/docs/latest/submitting-applications.html

注意:不要在代码库中对 master 进行硬编码,始终尝试从命令行提供这些变量。这使得应用程序可重用 local/test/mesos/kubernetes/yarn/whatever.

您可以将此 属性 添加到调试配置中的 VM 选项,而不是在代码中进行硬编码

-Dspark.master=local[2]