У меня есть новая установка искры 1.2.1 над кластером mapr, и при ее тестировании я нахожу, что он работает хорошо в локальном режиме, но в режимах пряжи он, похоже, не может получить доступ к переменным, ни при трансляции. Чтобы быть точным, следующий контрольный кодИскры карты RDD в режиме пряжи не позволяют получить доступ к переменным?
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
, fail, и все они работают, если --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?
Определить «сбой»? это важно, и вы не сказали, какую строку или какую ошибку. –