之所以称为一条,是真的只有一个需要注意的地方。
之前在为spark streaming程序分配资源的时候,为了提高并行度,尽量分配了更多的executor,最近在程序里增加了window操作,仍然是按每个executor一个core来分配的,结果发现程序运行的相当慢,而且经常会出现node_local,rack_local这种情况,因为我们的数据量比较大,所以数据的本地性比并行度更能影响性能,果断改为按window时长除以duration的数量来分配core的数量,这样就保证进行window操作的数据都在一个jvm里,保证process_local的本地性,运行速度提高了10倍以上,所以spark资源的分配还是要和具体的场景相联系,才能得到好的性能