【问题标题】:Apache spark master URL error running in idea intellij在idea intellij中运行的Apache spark master URL错误
【发布时间】:2020-06-15 19:30:06
【问题描述】:

我正在使用 intellij idea 在 scala 中进行 spark 应用程序。 我不知道为什么我会遇到错误。

代码:

package batch

import java.lang.management.ManagementFactory

import org.apache.spark.{SparkConf, SparkContext}

object BatchJob {
  def main(args: Array[String]): Unit = {


    val conf = new SparkConf()
      .setAppName("Lambda with Spark")

    val sc = new SparkContext(conf)
    val sourceFile = "file:///E:/Boxes/data.tsv"
    val input = sc.textFile(sourceFile)

    input.foreach(println)
  }

}

错误:

**Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration**

【问题讨论】:

标签: scala apache-spark


【解决方案1】:

以前的答案强制驱动程序在本地运行,具有多个内核。 这可以在本地进行快速测试,但如果您想使用 Spark 提交命令执行此驱动程序,则不好。

对我有用的技巧是创建一个默认 conf 并检查是否定义了 master。 如果不是,那么我假设是本地测试,我强制 master = local。

val SPARK_MASTER = "spark.master"
val DEFAULT_MASTER = "local[*]"

// get default conf
val defaultConf = new SparkConf()

// if master is not defined then set default to local
if(!defaultConf.contains(SPARK_MASTER)) defaultConf.setMaster(DEFAULT_MASTER)

val sparkSession = SparkSession.builder().config(defaultConf).getOrCreate()

【讨论】:

    【解决方案2】:

    如果您在 Intellij 上运行 Spark(在本地模式下),您也应该为 Spark 配置对象设置 master:

    val conf = new SparkConf().setAppName("Lambda with Spark").setMaster("local[*]")
    

    【讨论】:

    • 如果从 spark-submit 调用这将覆盖主配置,请检查我认为更好的答案
    • @CarlosVerdes 当然,但问题是关于在 Intellij 上运行 Spark,而不是使用 spark-submit 命令!
    • 我在 intellij 中运行我的代码,检查我今天测试的答案并且正在运行 :)
    【解决方案3】:

    问题正是错误所说的,你必须设置一个主 url 才能运行 spark。如果你在 ide 或本地运行,你应该像这样创建 SparkConf 对象:

    val conf = new SparkConf()
      .setAppName("Lambda with Spark").setMaster(local[*])
    

    为了在集群上运行,您可以使用 'yarn' 作为主节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      相关资源
      最近更新 更多