hadoop - yarn 模式下的 Spark RDD map 不允许访问变量?

标签 hadoop apache-spark mapr

我在 mapr 集群上安装了全新的 spark 1.2.1,在测试它时我发现它在本地模式下运行良好,但在 yarn 模式下它似乎无法访问变量,如果广播也是如此。准确的说是下面的测试代码

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 _)
}

在本地模式下工作,但在 yarn 中失败。更准确地说,transform2transformx2 这两种方法都失败了,如果 --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 映射中传递变量吗?

最佳答案

我会做出一个很好的猜测:这是因为您正在使用 App。参见 https://issues.apache.org/jira/browse/SPARK-4170了解详情。改为编写 main() 方法。

关于hadoop - yarn 模式下的 Spark RDD map 不允许访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29049677/

相关文章:

hadoop - PIG Group - 无法获取多个字段

hadoop - 无法启动 sqoop : jobtracker not found

java - 避免在写入多个输出文件的Hadoop Pig脚本中发生文件冲突

scala - 如何在scala中进行外部连接

java - 在 MaprDB 中存储文档(.pdf、.doc 和 .txt 文件)

hadoop - 处理hadoop中的行数据以添加缺少的列

scala - 了解 Kryo 序列化缓冲区溢出错误

apache-spark - pyspark.mllib DenseMatrix 乘法

hadoop - 访问mapR-DB表时出错

hadoop - 如何识别 MapReduce 程序中的输入格式