You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark连接MongoDB遇[Error 13]权限错误:无法访问home/.cache

解决PySpark + MongoDB连接时的权限与文件提取问题

你已经搞定了PySpark Shell启动和MongoDB连接的第一步,遇到的权限报错和文件提取失败,大概率是用户缓存目录权限配置或者Spark临时文件路径的问题,咱们一步步来排查:

1. 先解决.cache目录的权限问题

报错[Error 13] permission denied 'home/.cache'说明当前运行PySpark的用户,没有对~/.cache(用户主目录下的缓存文件夹)的读写权限,也可能是路径写法遗漏了波浪线(正确路径应该是~/.cache而非home/.cache)。

  • 先检查.cache目录的权限状态:
    ls -ld ~/.cache
    
  • 如果当前用户不是目录所有者,修改归属权:
    sudo chown -R $USER:$USER ~/.cache
    
  • 测试环境下也可以直接开放读写权限(生产环境谨慎操作):
    chmod -R 755 ~/.cache
    

2. 排查Spark临时文件提取失败问题

文件提取失败通常和Spark的临时目录(spark.local.dir)权限有关——PySpark运行时会把依赖的py文件、jar包解压到临时目录,若该目录权限不足就会报错。

  • 启动PySpark时显式指定一个有读写权限的临时目录,比如系统默认的临时目录:
    pyspark --jars your-mongo-jars.jar --conf spark.local.dir=/tmp/spark-tmp --py-files pymongo_spark.py
    
  • 也可以自己创建专属临时目录并赋予权限:
    mkdir -p ~/spark-tmp
    chmod -R 777 ~/spark-tmp
    
    然后启动时指定:--conf spark.local.dir=~/spark-tmp

3. 简化验证连接与输出的测试

权限问题解决后,用最基础的代码验证功能:

import pymongo_spark
pymongo_spark.activate()

# 连接MongoDB测试集合
rdd = sc.mongoRDD("mongodb://localhost:27017/test_db.test_collection")
# 输出第一条数据(模拟"hello world"场景)
print(rdd.first())

如果仍有问题,检查pymongo_spark.py的路径是否正确,启动时--py-files参数是否指定了完整的文件路径,避免Spark找不到依赖文件导致提取失败。

4. 额外注意:用户身份问题

如果你用sudo启动PySpark,当前用户是root,而~/.cache是普通用户的目录,root访问会触发权限问题。这种情况要么切换回普通用户启动,要么给root指定专属缓存目录:

export XDG_CACHE_HOME=/root/.cache
pyspark --jars ... --conf ... --py-files ...

内容的提问来源于stack exchange,提问作者someone cool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:12:30