首先你要明确两点 1.shuffle本来就在内存中read和write(内存不够才会spill到硬盘) 2.node local、process、rack这个属性不是shuffle的,是计算节点和数据的关系 你百度一些spark的内存管理和spark shuffle过程的资料
shuffle是你计算逻辑中,要把一个节点的数据发送到另外一个节点进行计算 例如orderbykey这样的计算,首先第一步每台集群上的数据map出key和value,第二部将key集中在一个节点上才能排序,这时就会有其它节点向一个节点发送那个key value的数据。 shuffle read就是整个计算逻辑中所有节点数据传输的总和。 和你计算时数据的node local、process、rack属性没有关系。
hadoop、spark中的shuffle就是跨节点的数据传输,比如排序、repartition等,需要将一个节点的数据移动到另外一个节点上。 跟在本地、内存没有关系,你如果说的是内存中的计算,你可以把原始数据或者某一个stage的结果cache到内存,方法是cache()
20,808
社区成员
4,690
社区内容
加载中
试试用AI创作助手写篇文章吧