【发布时间】:2015-03-14 13:50:43
【问题描述】:
我在 mapr 集群上安装了全新的 spark 1.2.1,在对其进行测试时,我发现它在本地模式下运行良好,但在纱线模式下,它似乎无法访问变量,如果广播也无法访问。准确来说,如下测试代码
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object JustSpark extends App {
val conf = new org.apache.spark.SparkConf().setAppName("SimpleApplication")
val sc = new SparkContext(conf)
val a = List(1,3,4,5,6)
val b = List("a","b","c")
val bBC= sc.broadcast(b)
val data = sc.parallelize(a)
val transform = data map ( t => { "hi" })
transform.take(3) foreach (println _)
val transformx2 = data map ( t => { bBC.value.size })
transformx2.take(3) foreach (println _)
//val transform2 = data map ( t => { b.size })
//transform2.take(3) foreach (println _)
}
在本地模式下工作,但在纱线中失败。更准确地说,transform2 和transformx2 这两种方法都失败了,如果--master local[8],它们都可以工作。
我正在用sbt编译它并用提交工具发送
/opt/mapr/spark/spark-1.2.1/bin/spark-submit --class JustSpark --master yarn target/scala-2.10/simulator_2.10-1.0.jar
知道发生了什么吗?失败消息只是声称在它应该访问变量的地方有一个 java 空指针异常。是否有其他方法可以在 RDD 映射中传递变量?
【问题讨论】:
-
定义“失败”?这很关键,你还没有说哪一行或什么错误。
标签: hadoop apache-spark mapr