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

使用from_avro方法时出现TimestampNTZType类缺失错误求助

问题解决:Spark 3.0.2使用from_avro出现NoClassDefFoundError错误

问题原因

TimestampNTZType是Spark 3.2及更高版本才引入的类型,Spark 3.0.2本身并不包含这个类。出现错误的核心原因是avro相关依赖版本与Spark 3.0.2不匹配——大概率是引入了适配Spark 3.2+的spark-avro包,导致代码尝试加载Spark 3.0.2不存在的类。

解决办法

  • 使用与Spark 3.0.2匹配的spark-avro版本
    Spark 3.0.x对应的spark-avro版本必须是3.0.2,提交应用时通过--packages参数指定依赖:

    spark-submit --packages org.apache.spark:spark-avro_2.12:3.0.2 your_script.py
    

    如果是本地开发环境,直接下载对应版本的spark-avro_2.12-3.0.2.jar放入Spark的jars目录,替换掉原有不兼容的版本。

  • 清理依赖冲突
    检查项目或环境中是否存在高版本的Spark相关jar包(比如Spark 3.2+的spark-sql.jar或其他组件jar),这类jar会导致类加载冲突,必须移除,只保留Spark 3.0.2对应的全套依赖。

  • 修正schema语法错误
    你的schema定义末尾缺少闭合的}]},修正后的代码如下:

    schema = """{
                "type": "record",
                "name": "struct",
                "fields": [
                  {"name":"fileno", "type":["null", "string", "int", "double", "float", "long"]},
                  {"name":"recordtype", "type":["null", "string", "int", "double", "float", "long"]}
                ]
              }"""
    
    from pyspark.sql.avro.functions import from_avro
    import pyspark.sql.functions as F
    df.select(from_avro(F.col("value"), schema))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:40:28