【发布时间】:2014-11-30 21:30:23
【问题描述】:
我有一个名为“edges”的大数据
org.apache.spark.rdd.RDD[org.apache.spark.graphx.Edge[(String, Int)]] = MappedRDD[27] at map at <console>:52
当我在独立模式下工作时,我能够收集、计数和保存这个文件。现在,在集群上,我收到了这个错误
edges.count
...
Serialized task 28:0 was 12519797 bytes which exceeds spark.akka.frameSize
(10485760 bytes). Consider using broadcast variables for large values.
与 .saveAsTextFile("edges") 相同
这是来自 spark-shell。我尝试过使用该选项
--driver-java-options "-Dspark.akka.frameSize=15"
但是当我这样做时,它只是无限期地挂起。任何帮助,将不胜感激。
** 编辑 **
我的独立模式是 Spark 1.1.0,我的集群是 Spark 1.0.1。
此外,当我对 RDD 进行计数、收集或另存为*时会发生挂起,但定义它或对其进行过滤器工作正常。
【问题讨论】:
-
您使用的是哪个版本的 Spark?如果您升级到 Spark 1.1.0+,这应该不再是问题,因为新版本的 Spark 会自动广播任务的代码。
-
谢谢乔希,我会尝试并告诉你。我现在在 1.0.1 上。
-
另外,在我升级之前,你们有 1.0.1 的解决方法吗?
-
我发布了一个答案,只是为了为错误消息和指向相关 JIRA 的指针提供一些额外的上下文。 Spark 1.0.0 中肯定存在与较大帧大小相关的错误(请参阅issues.apache.org/jira/browse/SPARK-1112),但它应该已由 1.0.1 修复。当你说它挂起时,它在什么时候挂起?什么时候启动外壳?跑工作?启动执行器?
标签: scala apache-spark rdd