【问题标题】:Standalone Spark application in IntelliJIntelliJ 中的独立 Spark 应用程序
【发布时间】:2020-06-21 00:47:11
【问题描述】:

我正在尝试在本地服务器上运行 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 jars。当在 IntelliJ 之外的 sbt 中运行相同的项目时,该问题也会重现。

【问题讨论】:

  • 您要调试的究竟是什么,仅仅是 Spark 管道还是应用程序运行的分布式方式?
  • 只是管道。没有任何火花内部或任何与分布式运行相关的问题。

标签: apache-spark intellij-idea hadoop-yarn


【解决方案1】:

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

-Dspark.master=local[2]

【讨论】:

    【解决方案2】:

    如果您必须使用微量数据测试管道,您可以使用 .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。

    【讨论】:

    • 您是如何提交申请的?我添加了添加它的编程方式
    • 我正在运行您在代码中显示的应用程序(只是在您发布它的那一刻发现了该 API),而不是从外部提交它。它很简单。谢谢,我们可能可以删除我们的 cmets,因为在我看来,没有它们的答案完整
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2017-05-07
    • 2012-11-03
    • 2011-10-16
    相关资源
    最近更新 更多