我有这样的代码:
.repartition( 10 )
.rdd.mapPartitions(
it => MyProcessor.process(it)
).count()
重新分区似乎很好(每个分区的行数合理)。
问题是我有OOM,因为应用于每个分区又称为 MyProcessor 的任务都不知道可用内存。每个处理器的用户区缓冲区的确为2GB(因此一个分区一次为2GB),但是它不了解Spark的内存消耗,因此我的假设是它的OOM失败了。
在不增加分区的情况下,两者的相关Spark配置属性是什么:
这里的问题是Spark和userland之间共享内存。您是否有关于解决该问题的相关Spark选项的想法?谢谢