scala Spark:驱动程序日志显示“线程将排序数据溢出到磁盘”

lf5gs5x2  于 5个月前  发布在  Scala
关注(0)|答案(2)|浏览(90)

有人能帮助我了解什么可能是下面的行来在Spark工作日志的可能原因。
2018-06- 11 T05:35:46,181- INFO [任务328的执行者任务启动工作程序:Logging$class@54] - TID 328等待堆上执行池的至少1/2N空闲2018-06- 11 T05:35:46,182- INFO [任务329的执行者任务启动工作程序:UnsafeExternalSorter@202] -线程151将50.0 MB的排序数据溢出到磁盘(到目前为止20次)
2018-06- 11 T05:35:46,188-信息[任务322的执行任务启动工人:UnsafeExternalSorter@202] -线程176溢出33.0 MB的排序数据到磁盘(到目前为止27次)
Spark程序工作:
1.查询数据库,缓存整个表(缓存2GB)
1.按顺序选择3个国家中的一个国家的记录(丹麦、印度、新西兰)
1.将该框架分成500块,并将其传递给一个map函数,该函数在一块中创建一组记录的json,并将其发送到搜索服务器

  1. map应用于并行集合(Vector)执行并行处理,我们可以并行发送到搜索服务器进行索引。
    我是Spark的新手,所以请帮助我了解配置的哪个部分应该阻止这种溢出。Spark版本是2.1.1
ljsrvy3e

ljsrvy3e1#

  • 根据日志,对数据进行排序。
  • 在排序期间没有足够的内存来存储用于在内存中混洗的辅助数据结构。
  • 因此Spark将数据溢出到磁盘。
62o28rlo

62o28rlo2#

此日志表示没有足够的内存用于任务计算,并将数据交换到磁盘,这是一个昂贵的操作。当您在一个或几个执行器任务中发现此日志时,表明存在数据偏斜,您可能需要找到偏斜关键数据并对其进行预处理。

相关问题