为什么PySpark通过spark-submit提交时--archives的tar包在K8s下解压报错
问题根因
该报错由Spark Driver Pod内存不足导致:你提交任务时未指定Driver内存配置,Spark默认的Driver内存配额仅1G,无法支撑Conda虚拟环境压缩包的完整解压操作(Conda环境包含大量小文件,解压过程会占用额外内存,你的报错点刚好出现在pandas测试目录下的缓存文件解压环节)。本地运行时内存没有配额限制,因此不会触发该问题。
修复方案
- 提交spark-submit任务时新增Driver内存配置,根据虚拟环境体积调整到4G及以上即可:
只需在原有提交命令中添加--driver-memory 4g参数即可,也可根据实际情况上调到6G-8G。 - 优化虚拟环境打包逻辑,减少压缩包体积,降低解压内存开销:
打包前清理测试用例、缓存文件等非必要内容,参考清理命令:# 清理所有第三方库的测试目录 rm -rf ${pyspark_venv}/lib/python*/site-packages/*/tests # 清理所有pycache缓存目录和pyc缓存文件 find ${pyspark_venv} -name "__pycache__" -type d -exec rm -rf {} \; find ${pyspark_venv} -name "*.pyc" -delete - 若调整配置后仍报错,检查minikube节点本身的内存配额是否足够:
执行minikube config view查看当前内存上限,若不足可执行以下命令调整:minikube stop minikube config set memory 8192 # 调整节点内存上限为8G,可按需上调 minikube start
内容的提问来源于stack exchange,提问作者Mich Talebzadeh
相关产品推荐
相关产品推荐

