Spark从哪里为RDD加载数据?数据是否已经存在于执行节点或spark先从驱动节点洗牌数据?
从名称本身- RDD(弹性分布式数据集)-它表明当您创建它时数据驻留在执行器之间。
让我们假设当你运行parallelize()
的100个条目,它会将这100个条目分布在你的执行器上,这样每个执行器都有自己的数据块来进行分布式处理。
洗牌发生-当你做任何操作,如repartition()
或coalesce()
。此外,如果您运行collect()
等函数,spark将尝试从执行器中提取所有数据并将其带到驱动程序(并且您失去了分布式处理的能力)
这个参考有更多关于spark - Apache spark架构内部的细节