PySpark 3.2.0将DataFrame写入TFRecords失败求助
解决PySpark写入TFRecords时的ClassNotFoundException问题
核心原因:版本不兼容
你当前使用的spark-tensorflow-connector-1.0.0-s_2.11.jar是基于Scala 2.11编译的,但PySpark 3.2.0默认依赖Scala 2.12,版本不匹配导致类加载失败。
分步解决办法
1. 下载对应版本的Connector Jar
选择与Spark 3.2.0、Scala 2.12兼容的spark-tensorflow-connector包(文件名通常包含s_2.12标识)。
2. 确保Jar包配置正确
方式一:SparkSession中指定绝对路径
用绝对路径配置spark.jars,避免相对路径找不到的问题:
spark = SparkSession.builder\ .appName('stc-test')\ .config('spark.jars', '/你的绝对路径/spark-tensorflow-connector-<对应版本号>-s_2.12.jar')\ .getOrCreate()
方式二:启动PySpark时通过参数指定
直接在启动命令中加入--jars参数加载Jar包:
pyspark --jars /你的绝对路径/spark-tensorflow-connector-<对应版本号>-s_2.12.jar
方式三:将Jar包放入Spark默认jars目录
把下载好的Jar包复制到Spark安装目录下的jars文件夹,Spark启动时会自动加载该包,无需额外配置。
3. 验证Jar包是否加载成功
执行以下代码查看已加载的Jar包列表,确认目标Jar包在其中:
for jar in spark.sparkContext.listJars(): print(jar)
4. 重新执行写入TFRecords代码
确认Jar包加载无误后,再次运行写入逻辑:
train_pdf.write.format('tfrecords').option('writeLocality', 'local').save("/tfrecords")
内容的提问来源于stack exchange,提问作者haneulkim
相关产品推荐
相关产品推荐

