Spark partitionBy写.保存带来的所有数据的驱动程序



所以基本上我有一个python spark作业,读取一些简单的json文件,然后尝试将它们写入由一个字段分区的orc文件。分区不是很平衡,因为有些键非常大,而其他键非常小。

当我做这样的事情时,我有内存问题:

events.write.mode('append').partitionBy("type").save("s3n://mybucket/tofolder"), format="orc")

为执行程序增加内存似乎没有任何效果,但我解决了这个问题,增加了驱动程序内存。这是否意味着所有的数据都被发送到驱动程序供其写入?每个执行器不能写自己的分区吗?我使用Spark 2.0.1

即使您对数据集进行分区,然后将其写入存储器,也不可能将记录发送给驱动程序。您应该查看内存问题的日志(如果它们发生在驱动程序或执行程序上),以找出失败的确切原因。

可能你的驱动程序内存太低,无法处理这个write,因为之前的计算。尝试减少spark.ui.retainedJobsspark.ui.retainedStages以节省旧作业和阶段元数据的内存。如果这不起作用,请使用jvisualvm连接到驱动程序以查找消耗大量堆碎片的作业/阶段,并尝试优化。

相关内容

  • 没有找到相关文章

最新更新