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

Spark 2.4.5保存DataFrame为TFRecords格式报错求助

解决Spark 2.4.5保存DataFrame为TFRecords时的ClassNotFoundException问题

问题重现

执行以下代码保存Spark DataFrame为TFRecords格式:

df.write.format("tfrecords").mode("overwrite").save()

出现报错:

Py4JJavaError: An error occurred while calling o1095.save.
: java.lang.ClassNotFoundException: Failed to find data source: tfrecords. Please find packages at http://spark.apache.org/third-party-projects.html

原因

Spark原生不支持TFRecords格式,需要引入第三方兼容的连接器依赖包。

解决方案

针对Spark 2.4.5版本,可通过以下方式解决:

  • 方式一:启动Spark时指定依赖包
    在提交Spark任务时,用--packages参数引入适配的依赖:

    spark-submit --packages org.tensorflow:spark-tensorflow-connector_2.11:1.15.0 your_pyspark_script.py
    

    注:Spark 2.4.5默认使用Scala 2.11,所以依赖包名中的_2.11要对应;tensorflow connector版本选择1.15.0可与Spark 2.4.5兼容。

  • 方式二:在代码中配置依赖
    创建SparkSession时,通过spark.jars.packages配置依赖:

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder \
        .appName("SaveTFRecords") \
        .config("spark.jars.packages", "org.tensorflow:spark-tensorflow-connector_2.11:1.15.0") \
        .getOrCreate()
    
  • 方式三:手动添加jar包到Spark环境
    下载对应版本的spark-tensorflow-connector jar包,将其放置到Spark安装目录的jars文件夹下,重启Spark服务后即可生效。

完成上述操作后,重新执行保存TFRecords的命令即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:35:23