Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 为什么洗牌溢出(内存)不仅仅是spark驱动程序/执行器内存_Apache Spark_Pyspark_Shuffle - Fatal编程技术网

Apache spark 为什么洗牌溢出(内存)不仅仅是spark驱动程序/执行器内存

Apache spark 为什么洗牌溢出(内存)不仅仅是spark驱动程序/执行器内存,apache-spark,pyspark,shuffle,Apache Spark,Pyspark,Shuffle,在阅读了一些在线论坛和堆栈溢出问题后,我了解到: 当执行器的内存不足时,就会发生数据溢出。 shuffle spill(memory)是溢出时内存中数据的反序列化形式的大小 我正在本地运行spark,并将spark驱动程序内存设置为10g 如果我的理解是正确的,那么如果groupBy操作需要的执行内存超过10GB它必须将数据溢出到磁盘 假设一个groupBy操作需要12GB内存,因为驱动程序内存设置为10GB它必须将几乎2GB的数据溢出到磁盘,所以洗牌溢出(磁盘)应该是2GB,洗牌溢出(内存)应

在阅读了一些在线论坛和堆栈溢出问题后,我了解到:

当执行器的内存不足时,就会发生数据溢出。 shuffle spill(memory)是溢出时内存中数据的反序列化形式的大小

我正在本地运行spark,并将spark驱动程序内存设置为
10g

如果我的理解是正确的,那么如果
groupBy
操作需要的执行内存超过
10GB
它必须将数据溢出到磁盘

假设一个
groupBy
操作需要
12GB
内存,因为驱动程序内存设置为
10GB
它必须将几乎
2GB
的数据溢出到磁盘,所以洗牌溢出(磁盘)应该是2GB,洗牌溢出(内存)应该是10GB的扩孔,因为洗牌溢出(内存)溢出时内存中数据的大小

如果我的理解正确,则
洗牌溢出(内存)
我在windows任务管理器中观察到内存消耗,在作业运行时,它从未超过10.5GB,那么怎么可能洗牌溢出(内存)是26.7GB

这是因为度量是在整个任务中聚合的。所以,如果溢出发生三次,每次内存为10GB,则总数甚至可能达到30GB

    Total Time Across All Tasks: 41 min
    Locality Level Summary: Process local: 45
    Input Size / Records: 1428.1 MB / 42783987
    Shuffle Write: 3.8 GB / 23391365
    Shuffle Spill (Memory): 26.7 GB
    Shuffle Spill (Disk): 2.1 GB