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

在AWS Cloud9初始化PySpark 3.3.1并读取S3文件时遇报错求助

在AWS Cloud9中初始化PySpark 3.3.1并读取S3文件的问题

问题说明

我在AWS Cloud9环境中初始化PySpark 3.3.1版本,尝试读取AWS S3上的文件时出现错误,推测是PySpark初始化配置存在问题。目前我的PySpark版本为3.3.1,Hadoop版本为3,试过同事提供的启动代码但无效。

当前使用的启动代码

pkg_list=org.apache.spark:spark-avro_2.11:2.4.4,org.apache.hadoop:hadoop-aws:2.7.1

pyspark --packages $pkg_list --driver-memory 32G --driver-cores 8 --num-executors 8 --executor-memory 32G --executor-cores 8 --driver-java-options="-Djava.io.tmpdir=/home/yoongkiat/tempfiles"

问题分析与解决办法

  • 依赖版本不匹配:你当前指定的依赖包版本和PySpark 3.3.1、Hadoop 3完全不兼容,这是核心问题:
    • PySpark 3.3.1对应的Scala版本是2.12,而非2.11,因此spark-avro需要使用适配Scala 2.12且版本匹配PySpark的包,比如org.apache.spark:spark-avro_2.12:3.3.1
    • Hadoop版本为3,所以hadoop-aws需要选用3.x系列的兼容版本,比如org.apache.hadoop:hadoop-aws:3.3.4
  • 修正后的启动命令:
pkg_list=org.apache.spark:spark-avro_2.12:3.3.1,org.apache.hadoop:hadoop-aws:3.3.4

pyspark --packages $pkg_list --driver-memory 32G --driver-cores 8 --num-executors 8 --executor-memory 32G --executor-cores 8 --driver-java-options="-Djava.io.tmpdir=/home/yoongkiat/tempfiles"
  • S3读取额外配置:启动PySpark后,若Cloud9实例已绑定有权限访问目标S3桶的IAM角色,无需手动配置密钥;若未绑定,则需在代码中添加认证配置:
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("S3FileReader").getOrCreate()

# 未绑定IAM角色时添加以下配置(替换为你的密钥)
# spark._jsc.hadoopConfiguration().set("fs.s3a.access.key", "你的AWS_ACCESS_KEY_ID")
# spark._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "你的AWS_SECRET_ACCESS_KEY")

# 读取S3文件示例
df = spark.read.csv("s3a://你的存储桶名称/文件路径.csv")
df.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:30:49