我想把rdd的每一块数据转化为np.array,然后进行迭代计算。对rdd先glom,然后再map。(data_rdd.glom().map(func)) func为迭代函数
python中矩阵计算是并行的,我top了一下,在python下,矩阵计算时大概会调用4个cup。
在pyspark中,我测试了一下,如果每个节点只起一个executor,每个executor只配分一个core的话,完成一个map迭代大概需要花费10s。
我使用4核8线程电脑进行spark并行,为什么如果一个节点起一个executor,然后分配2个core,那么每个map完成时间大概在20s,分配3个core,每个map完成时间就在30s以上,以此类推?(我查看cup符合,一个core时,大概有4个cup满负荷,2个core及以上,那么基本8个cup就都满负荷工作了。这样看来,2cores时,完成一个map不应该跟分配1core时差不多的效率吗)