我的集群具有以下特征:
4个节点,每个节点8个核心,每个节点8GB
运行程序时,它具有以下特征:
-部署模式集群 --executor-cores 5 --num-executors 4 -执行者内存6G -驱动程序内存5G
30个线程(用于repartition
函数)
问题在于,对于500000个元组来说,这会延迟很多,并且当我增加线程数(例如30个)时,它可以正确执行分配,但是每个节点的每个线程仅处理已签名的部分,而不是全部它应为元组(500000/30 = 16666,每个线程15 * 16666 = 250000,500000-250000 = 250000个未处理的元组)。
当我在计算机上尝试使用local[15]
(即使我只有4个线程)时,该算法会将数据分配到我指示的15个线程中,并为其分配相应的元组数。
我希望在群集中会发生类似我的计算机的行为,但是它只是实现了我指示的线程数之间的数据分区,但只处理了群集具有的15个物理线程。我该如何解决这个问题,或者在集群中无法进行更多的分区?