rdd map操作为啥集中在一个executor上实施
python写了一个很简单的程序:
conf=Sparkconf().setMaster("spark://123.43.54.12:7077").setAppname("test")
sc=SparkContext(conf=conf)
def ct(p):
temp=0
for i in range(10000):
tempi=math.sin(i)+math.cos(i)
temp=temp+tempi
return temp
p_list=list(range(100000))
p_rdd=sc.parallelize(p_list,4)
gt_value=p_rdd.map(lambda p:ct(p)).coalesce(144)
sc.stop()
每次执行都发现,仅仅在一个executor上运行,每次执行,且worker的地址可能会变化。根本不能使用所有的执行器。
提交语法:
submit --master spark://123.43.54.12:7077 --deploy-mode client --num-executors 2 --executor-cores 1
很是奇怪。操作系统的逻辑cpu3个。。