赞
踩
标签(空格分隔): 异常积累
在写spark程序的时候,许多人会遇到以下这个报错,包括我自己也遇到过,当时郁闷了很久
报错说在配置中必须设置一个master URL.但是我明明在提交应用的时候设置了–master呀,为什么说我没有,于是非常惊讶,怀疑是不是计算机自己疯掉了。
其实这是初学者很容易犯的错误,原因在于没有真正理解spark分布式或伪分布式的运行原理。出错的小伙伴往往把创建spark实例,或者sc.textFile读取数据等放在了main函数的外面。像下面这样写是错误的:
在伪分布式中,一个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)
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。