欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常解决:A master URL must be set in your configuration

程序员文章站 2022-07-12 14:16:33
...

异常解决:A master URL must be set in your configuration

标签(空格分隔): 异常积累


在写spark程序的时候,许多人会遇到以下这个报错,包括我自己也遇到过,当时郁闷了很久

异常解决:A master URL must be set in your configuration

报错说在配置中必须设置一个master URL.但是我明明在提交应用的时候设置了–master呀,为什么说我没有,于是非常惊讶,怀疑是不是计算机自己疯掉了。

其实这是初学者很容易犯的错误,原因在于没有真正理解spark分布式或伪分布式的运行原理。出错的小伙伴往往把创建spark实例,或者sc.textFile读取数据等放在了main函数的外面。像下面这样写是错误的:

异常解决:A master URL must be set in your configuration

在伪分布式中,一个spark 应用对应了一个main函数,放在一个driver里,driver里有一个对应的实例(spark context).driver 负责向各个节点分发资源以及数据。那么如果你把创建实例放在了main函数的外面,driver就没法分发了。所以如果这样写在local模式下是可以成功的,在分布式就会报错。(好吧,解释地有点直白和不专业)

所以正确的写法应该是这样:

def main(args: Array[String]) {

  val sparkConf = new SparkConf().setAppName("XXXX")
  val sc = new SparkContext(sparkConf)

}