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

在Spark环境的Jupyter Notebook中执行脚本时无法从PySpark获取数据

我来帮你排查几个常见的问题点,应该能解决你从Redshift读取数据失败的问题:

首先先给你一个修正后的代码示例,然后逐个解释关键问题:

from pyspark.conf import SparkConf
from pyspark.sql import SparkSession

# 用SparkSession统一初始化上下文(新版Spark推荐方式)
spark = SparkSession.builder \
    .appName("RedshiftDataLoad") \
    # 配置依赖包,版本要匹配你的Spark/Scala版本,这里示例是Spark3.3+Scala2.12
    .config("spark.jars.packages", "com.databricks:spark-redshift_2.12:5.0.0,org.apache.hadoop:hadoop-aws:3.3.4,com.amazonaws:aws-java-sdk-bundle:1.12.262") \
    .getOrCreate()

# 切换到更推荐的s3a协议配置S3凭证
spark._jsc.hadoopConfiguration().set("fs.s3a.access.key", "xxxx")
spark._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "uyuu")

# 读取Redshift数据,补全关键配置
df = spark.read \
    .format("com.databricks.spark.redshift") \
    # 补全完整的Redshift URL,包含端口、库名和SSL配置
    .option("url", "jdbc:redshift://your-cluster-endpoint:5439/your-db-name?ssl=true&sslmode=require") \
    .option("dbtable", "index") \
    # 必须配置S3临时目录(连接器依赖这个做数据中转)
    .option("tempdir", "s3a://your-s3-bucket/path/to/temp-folder/") \
    .option("forward_spark_s3_credentials", "true") \
    .load()

# 测试读取结果
df.show()

关键问题解析:

  • 缺失临时目录配置
    Spark Redshift连接器必须通过S3临时目录来中转数据,你的代码里完全没指定tempdir选项,这是最核心的缺失项。一定要填一个你有权限读写的S3路径,格式用s3a://bucket/path/。

  • Spark上下文初始化方式过时
    新版Spark(2.x及以上)已经统一用SparkSession来管理上下文,单独使用SQLContext(sc)容易出现上下文冲突或者配置不生效的问题,建议换成SparkSession初始化。

  • S3协议选择错误
    s3n是比较老旧的S3协议实现,现在AWS和Hadoop社区都推荐用s3a,它支持更大文件、更好的性能和更多功能。记得把配置里的fs.s3n.xxx改成fs.s3a.access.key和fs.s3a.secret.key。

  • Redshift URL不完整
    你写的jdbc:redshift://xxxx缺少了端口号、数据库名,而且Redshift默认要求SSL连接,所以完整的URL格式应该包含这些信息,不然连不上集群。

  • 依赖包是否齐全
    确保你的Spark环境加载了正确版本的依赖包:

    • spark-redshift包要匹配你的Scala和Spark版本(比如Spark3.3对应Scala2.12,包版本选5.0.0)
    • hadoop-aws和aws-java-sdk-bundle是连接S3必须的依赖,版本要和你的Hadoop版本匹配
  • 权限验证
    最后检查下权限:

    • 你的AWS密钥要有S3临时目录的读写权限,以及Redshift目标表index的SELECT权限
    • 如果开启了forward_spark_s3_credentials,要确保Redshift的IAM角色允许接收Spark传递的凭证

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

相关产品推荐
方舟 Agent Plan

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

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