';“线程中的异常”;dispatcher-event-loop-0“;java.lang.OutOfMemoryError:java堆空间';Spark Scala代码中的错误

';“线程中的异常”;dispatcher-event-loop-0“;java.lang.OutOfMemoryError:java堆空间';Spark Scala代码中的错误,java,scala,apache-spark,apache-spark-sql,out-of-memory,Java,Scala,Apache Spark,Apache Spark Sql,Out Of Memory,但是没有用。我猜是这样的 spark.conf.set("spark.rpc.message.maxSize",Int.MaxValue) 是问题所在,因为您将(几乎)所有数据收集到驱动程序,即收集到单个JVM 这行可能会运行,但对dataString的后续操作将超出内存限制。你不应该收集你的数据!相反,使用分布式“数据结构”,如数据帧或RDD 我想你可以省略上面一行中的collect我猜是这样的 spark.conf.set("spark.rpc.message.maxSize",Int.M

但是没有用。

我猜是这样的

spark.conf.set("spark.rpc.message.maxSize",Int.MaxValue)
是问题所在,因为您将(几乎)所有数据收集到驱动程序,即收集到单个JVM

这行可能会运行,但对
dataString
的后续操作将超出内存限制。你不应该收集你的数据!相反,使用分布式“数据结构”,如数据帧或RDD

我想你可以省略上面一行中的
collect

我猜是这样的

spark.conf.set("spark.rpc.message.maxSize",Int.MaxValue)
是问题所在,因为您将(几乎)所有数据收集到驱动程序,即收集到单个JVM

这行可能会运行,但对
dataString
的后续操作将超出内存限制。你不应该收集你的数据!相反,使用分布式“数据结构”,如数据帧或RDD


我想你可以省略上面一行中的
收集
,请阅读-总结是,这不是一种理想的方式来解决志愿者问题,可能会对获得答案产生反作用。请不要将此添加到您的问题中。对不起,我读过了,不再使用。请阅读-总结是,这不是一种向志愿者致辞的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。抱歉。我已阅读此内容,不再使用。如果我删除collect,代码将失败。由于我是这个领域的新手,你能在这方面帮助我吗?如果我删除了collect,我应该怎么做。因为我在这个领域是个新手,你能帮我一下吗?我到底该怎么做
var dataArr = dataString.split("\\|\\#\\#\\|").map(s =>{
                                                          var arr = s.split("\\|\\*\\|")
                                                          while(arr.length < columns.length) arr = arr :+ ""
                                                          RowFactory.create(arr:_*)
                                                         }).toList
  val finalDF = sqlContext.createDataFrame(sc.makeRDD(dataArr),structSchema)
spark.conf.set("spark.rpc.message.maxSize",Int.MaxValue)
var dataString = correctData.collect().map(s => s.getString(0)).mkString("").replace("\\\n","").replace("\\\r","")