我正在使用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**
答案 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”作为主服务器。