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

PySpark读取Redshift表报错java.lang.NoClassDefFoundError: scala/Product$class求助

解决PySpark读取Redshift时的scala/Product$class缺失错误

错误原因

这个错误是因为你使用的spark-redshift包基于Scala 2.11编译,但你的Spark 3.2.2版本默认适配Scala 2.12,二者版本不兼容导致类加载失败。

解决方案

替换为与Scala 2.12匹配的spark-redshift包版本,并调整代码如下:

import findspark
# 使用Scala 2.12对应的spark-redshift包版本
findspark.add_packages("io.github.spark-redshift-community:spark-redshift_2.12:4.0.1")
# 若出现AWS相关依赖缺失,可添加以下包(可选)
# findspark.add_packages("com.amazonaws:aws-java-sdk-bundle:1.11.901", "org.apache.hadoop:hadoop-aws:3.3.1")
findspark.init()    

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Dim_Customer").getOrCreate()
df_read_1 = spark.read \
    .format("io.github.spark_redshift_community.spark.redshift") \
    .option("url", "jdbc:redshift://fake_ip:5439/fake_database?user=fake_user&password=fake_password") \
    .option("dbtable", "dim_customer") \
    .option("tempdir", "https://bucket-name.s3.region-code.amazonaws.com/") \
    .load()

额外注意

  • 确认S3临时目录tempdir具备读写权限,Redshift需要将数据写入该目录后,Spark才能完成读取操作
  • 如果仍有依赖问题,可以手动下载对应版本的jar包放入Spark的jars目录,或在提交任务时通过--jars参数指定依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:46