在项目当中, 必须要用到python库,而且还涉及到很多的Python的包调用,必须要用到PySpark。
问题
在使用pyspark过程当中, 遇到以下两类问题
python -m pyspark.daemon 进程 占用cpu 100%
CoarseGrainedExecutorBackend 与 pyspark.daemon tcp堆栈当中有大量的未读数据
task任务长时间无法完成
问题原因
因为大量的io阻塞,导致task任务 jvm与python pip无法正常关闭,但是jvm端认为读取已经完成所以导致 两进程都不退出。
解决方案
压缩文本 打开arrow格式 arrow性能说明如下
增大jvm的独立性
在spark-env.sh当中增加以下记录
修改spark-defaults.conf参数
效果
修改之前
修改之前,执行时间完全超出预期
修改之后
执行时间以小时计算
说明
数据总量大概在40-60G之间
打开arrow之后,并且设置了instances,shuffle之间的executor 就无法优化但是执行时间提升很大
领取专属 10元无门槛券
私享最新 技术干货