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

本地PyCharm运行PySpark作业访问S3时触发Py4JJavaError报错求助

问题解决:Py4JJavaError: spark.sql.execution.pythonUDF.arrow.enabled 不存在

核心原因

你当前使用的PySpark版本(3.5.1)与Spark二进制包版本(3.3.0)不兼容。PySpark 3.5.1会尝试读取spark.sql.execution.pythonUDF.arrow.enabled这个配置项,但Spark 3.3.0的核心Java代码中并没有定义该配置,因此触发NoSuchElementException。

解决方案

1. 对齐PySpark与Spark版本

必须保证两者版本完全一致,二选一操作:

  • 降级PySpark到3.3.0:
    打开终端执行:
    pip uninstall pyspark -y
    pip install pyspark==3.3.0
    
  • 升级Spark二进制包到3.5.1:
    下载对应Hadoop版本的Spark 3.5.1包(如spark-3.5.1-bin-hadoop3),替换本地现有3.3.0的Spark包,并更新环境变量SPARK_HOME指向新路径。

2. 验证环境配置

  • 确认PyCharm的Python解释器已关联安装了对应版本PySpark的虚拟环境
  • 检查系统环境变量SPARK_HOME是否正确指向解压后的Spark包目录

3. S3读取补充配置(若后续遇访问问题)

如果读取S3数据时仍有问题,需配置AWS访问参数并确保依赖包兼容:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("S3DataReader") \
    .config("spark.hadoop.fs.s3a.access.key", "你的AWS访问密钥ID") \
    .config("spark.hadoop.fs.s3a.secret.key", "你的AWS秘密访问密钥") \
    .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \
    .getOrCreate()

# 读取S3数据示例
df = spark.read.csv("s3a://your-bucket-name/path/to/data.csv", header=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:12:43