Spark:由groupbykey操作引起的内存不足异常

时间:2014-09-07 10:58:15

标签: apache-spark

我有一个大文件,其中每一行都是一个id为key的记录。

val lines = fileRdd.map(line => (line.id, line))

然后我按ID

对行进行分组
val groupedLines = lines.groupByKey()

因此具有相同id的行将被混洗到一个工作节点。 RDD groupsLines中的元组就像 id - > Iterable(line1,line2,...,lineN) 如果许多行具有相同的id,那么元组的值 Iterable(...)的大小将非常大,如果它大于那么JVM的内存限制在机器上进程,可能会出现内存不足问题。

那么这个问题是否存在,如果是,是否有人知道如何处理这种情况,分组RDD中元组的值太大? 我们可以只使用 sc.parallelize(t._2.toSeq)将元组的值更改为另一个嵌套的RDD,类似于 RDD [(ID,RDD)]

谢谢:P

2 个答案:

答案 0 :(得分:0)

您可能需要将spark.executor.memory增加到大于您当前使用的值。建议为5g

您能提供此类错误的堆栈跟踪吗?

答案 1 :(得分:0)

def groupByKey(numPartitions:Int):RDD [(K,Seq [V])]

尝试增加参数

numPartitions