Apache Spark Master URL错误在Idea Intellij中运行

时间:2018-10-09 05:50:12

标签: scala apache-spark

我正在使用intellij想法在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**

3 个答案:

答案 0 :(得分:1)

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

对我有用的技巧是创建一个默认的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()

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

问题恰恰是错误所说的,您必须为spark运行设置一个主URL。如果您在ide内部或本地运行,则应使SparkConf对象像这样:

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

要在集群上运行,可以使用“ yarn”作为主服务器。